Може ли един наблюдаем клас да бъде конструиран като единичен?

Правя програма на Java с модела Observer (с помощта на Java API). Ако някои от наблюдаемите имаха повече от един екземпляр, програмата можеше да се срине. Трябва ли да ги внедря като сингълтън? Препоръчително ли е?


person jsevilleja    schedule 25.04.2011    source източник


Отговори (3)


Правил съм го преди и нямах проблеми точно защото използвах сингълтон. Моделът е там, за да го използвате.

person Yoeri    schedule 25.04.2011

Трябва ли да ги внедря като сингълтън? Препоръчително ли е?

Разбира се, че можете да направите това. Дали това е добра идея зависи от действителния контекст.

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

  • Singletons имат проблеми по отношение на тестването на единици. Това не е спирачка, но е една от причините, поради които хората са склонни да ги избягват.

person Stephen C    schedule 26.04.2011

Да, GoF изброява Singleton като свързан модел (заедно с Mediator) към Observer:

ChangeManager може да използва модела Singleton, за да го направи уникален и глобално достъпен.

ChangeManager е техният Observable в примерния код.

Използвал съм Singleton Observable (тук), за да актуализирате графичния потребителски интерфейс всеки път, когато възникнат съответни промени в Persistence Unit. Програмата няма да се срине, но няма да функционира според очакванията, ако има повече екземпляри.

person simpatico    schedule 30.04.2011