Правя програма на Java с модела Observer (с помощта на Java API). Ако някои от наблюдаемите имаха повече от един екземпляр, програмата можеше да се срине. Трябва ли да ги внедря като сингълтън? Препоръчително ли е?
Може ли един наблюдаем клас да бъде конструиран като единичен?
Отговори (3)
Правил съм го преди и нямах проблеми точно защото използвах сингълтон. Моделът е там, за да го използвате.
Трябва ли да ги внедря като сингълтън? Препоръчително ли е?
Разбира се, че можете да направите това. Дали това е добра идея зависи от действителния контекст.
Тези неща концептуално сингълтън ли са, или това е просто хак, за да се опитате да накарате грешките да изчезнат? (Или казано по друг начин, истинският проблем ли е, че дизайнът на вашето приложение е грешен ...)
Singletons имат проблеми по отношение на тестването на единици. Това не е спирачка, но е една от причините, поради които хората са склонни да ги избягват.
Да, GoF изброява Singleton като свързан модел (заедно с Mediator) към Observer:
ChangeManager може да използва модела Singleton, за да го направи уникален и глобално достъпен.
ChangeManager е техният Observable в примерния код.
Използвал съм Singleton Observable (тук), за да актуализирате графичния потребителски интерфейс всеки път, когато възникнат съответни промени в Persistence Unit. Програмата няма да се срине, но няма да функционира според очакванията, ако има повече екземпляри.