Можно ли построить наблюдаемый класс как синглтон? - PullRequest
0 голосов
/ 26 апреля 2011

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

Ответы [ 3 ]

2 голосов
/ 26 апреля 2011

Должен ли я реализовать их как синглтон?Это рекомендуется?

Конечно, вы можете сделать это.Является ли это хорошей идеей, зависит от реального контекста.

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

  • У синглетонов действительно есть проблемы с модульным тестированием.Это не шоу-стопор, но это одна из причин, по которой люди склонны избегать их.

1 голос
/ 30 апреля 2011

Да, GoF перечисляет синглтон как связанный шаблон (вместе с посредником) для наблюдателя:

ChangeManager может использовать шаблон синглтона, чтобы сделать его уникальным и глобально доступным.

ChangeManager - это их Observable в примере кода.

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

1 голос
/ 26 апреля 2011

Я делал это раньше и у меня не было проблем именно потому, что я использовал синглтон. Шаблон существует для его использования.

...