Должен ли пользовательский интерфейс быть реализован с использованием шаблона проектирования Singleton? - PullRequest
3 голосов
/ 30 октября 2008

Я не могу придумать много причин (или вообще никаких), по которым в настольном приложении должно быть создано несколько независимых пользовательских интерфейсов. Это хорошая практика для реализации интерфейса как синглтон? Есть ли у этого подхода преимущества или недостатки?

Ответы [ 5 ]

3 голосов
/ 30 октября 2008

э-э ... я постоянно открываю несколько копий Internet Explorer, Word и Excel!

РЕДАКТИРОВАТЬ: У меня также есть несколько электронных писем, открытых одновременно в Eudora

Я не вижу веской причины ограничивать пользовательский интерфейс одноэлементным ...

2 голосов
/ 31 октября 2008

Я могу вспомнить пару:

1) Интерфейсы документов. Если ваше приложение имеет дело с документами, лучше, чтобы у каждого было свое окно. Это позволяет пользователю упорядочить свое рабочее пространство и переключаться между документами, используя возможности переключения приложений ОС. Многие MDI-приложения предотвращают это, объединяя несколько документов в одном окне, что ограничивает удобство использования экрана в сценарии с несколькими мониторами.

2) Просмотров. Часто бывает так, что несколько разных представлений данных за вашим пользовательским интерфейсом не могут быть легко объединены в одном экземпляре пользовательского интерфейса. Вы не всегда можете предсказать, какие комбинации данных будет видеть ваш пользователь одновременно, поэтому лучше предоставить им гибкость для создания нескольких пользовательских интерфейсов.

Кроме того, стоит отметить, что многие люди считают синглтон анти-паттерном.

1 голос
/ 31 октября 2008

Вы используете синглтон для случаев, когда ошибка имеет более одного экземпляра типа объекта, а не потому, что вы не можете придумать вескую причину иметь более одного экземпляра.

1 голос
/ 31 октября 2008

Синглтон является глобальной переменной. Вы делаете его глобальным, побуждает вас ссылаться на свои элементы управления во всех других ваших классах (представьте, что ваш уровень абстракции данных захватывает пару имя / адрес из базы данных и просто для удобства обновляет текстовое поле вашего имени / адреса прямо там) хрупкие и зависимости становятся трудно решить. Гораздо проще просто ограничить ответственность определенным подмножеством классов.

1 голос
/ 30 октября 2008

Какое преимущество дает вам синглтон? Знаете ли вы о потенциальных проблемах этого шаблона (например, проблемы многопоточности со всеми очевидными реализациями)?

На практике, если нет веских причин использовать его, вы можете отказаться от использования Синглтона. Для пользовательского интерфейса на самом деле нет веской причины, даже если он не создается несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...