Czy Singletony są naprawdę takie złe? [duplikować]

Możliwy duplikat:
Co jest takiego złego w Singletonach?

Zrozumiałe jest, że wiele wzorców projektowych może w niektórych przypadkach być nadużywanych i jak mama zawsze mówiła: „Zbyt wiele dobrych rzeczy nie zawsze jest dobre!"

Zauważam, że w dzisiejszych czasach używam singletonów bardzo często i obawiam się, że sam nadużyję wzorca projektowego i zaczynam się coraz głębiej nawiązywać do złych praktyk.

Tworzymy aplikację Flex, która ma dość dużą hierarchiczną strukturę danych przechowywaną w pamięci, gdy użytkownik na niej pracuje. Użytkownik może ładować, zapisywać, zmieniać i odświeżać dane na żądanie.

Dane te są scentralizowane za pomocą klasy Singleton, która agreguje kilka ArrayCollections, Arrays, obiektów wartości i innych natywnych zmiennych składowych ujawnionych za pośrednictwem getterów i setterów.

Aby uzyskać odniesienie do naszych danych z dowolnego miejsca w aplikacji, wykonujemy całą rzecz typu Model.getInstance (), którą jestem pewien, że wszyscy ją znają. Zapewnia to, że zawsze otrzymujemy te same kopie danych, ponieważ kiedy zaprojektowaliśmy, powiedzieliśmy, że tylko raz instancja może istnieć w czasie życia aplikacji.

Z tego centralnego repozytorium danych łatwo jest nam na przykład wysyłać zdarzenia o zmienionych właściwościach i mogą mieć wiele komponentów interfejsu użytkownika odwołujących się do danych centralnych, aktualizować ich wyświetlacze, aby odzwierciedlić zmiany danych, które miały miejsce.

Jak dotąd podejście to było skuteczne i okazało się bardzo praktyczne w naszych okolicznościach.

Odkryłem jednak, że jestem trochę przesadny przy tworzeniu nowych klas. Pytania takie, jak klasa powinna być singletonem, czy raczej powinna być zarządzana w inny sposób, na przykład, na przykład, używanie fabryki, bywa czasem trudne, z odrobiną niepewności.

Gdzie mam narysować linię z singletonami? Czy istnieje dobra wskazówka, kiedy decydować, kiedy używać Singletonów i kiedy trzymać się od nich z daleka.

Czy ktoś może polecić dobrą książkę o wzorach projektowych?

questionAnswers(12)

yourAnswerToTheQuestion