"Singleton ssie",
"Singleton jest dla leniwych",
"Singleton to zło" i podobne.
Osobiście nie rozumiem, dlaczego ludzie tak bardzo na to naskakują.
W swoim "frameworku" używam singletona dość często z jednego ważnego względu. Mam sporą ilość klas, których konieczne jest istnienie jednego egzemplarza.
Oto przykładowe klasy.
Site:
- Przechowuje wszystkie ustawienia dotyczące działania systemu (znak separacjie urla i sporo takich typowo systemowych)
- do niej importuje listę plików jakie należy dołączyć w htmlu w sekcji head
- posiada egzemplarz klasy do obsługi URL (tworzenie, parsowanie, analiza)
- Komunikaty dla użytkownika
- tutaj pare innych mniej waznych funkcji
<?php $site=new Site(); ?>
Baza danych:
Tutaj chyba nie trzeba mówić, co owa klasa czyni. Rozumiem argument "A co jeżeli chcesz utworzyć połączenie z nową bazą danych?"
Można to rozwiązać bez najmniejszego problemu (np. utworzenie klasy dbConnection). Lecz w większości przypadków korzysta się z jednej bazy i jednego pola.
Singleton jak najbardziej na +;
System szablonów:
Rozszerzenie Open Power Template, gdzie dodałem singletona. Dlaczego? Bez sensu jest za każdym razem tworzenie nowego egzemplarza nawet jak chce przeparsować tylko małą część strony, niepotrzebne użycie pamięcie poprzez wartości każdego nowego egzemplarza.
Singleton + za mniejsze zużycie pamięci.
Użytkownik:
Całą gama funkcji operujących na użytkowniku, wylogowanie, logowanie, zmiana danych, zalanie herbaty, masaż i wiele innych.
Przechowuje wszystkie informacje o użytkowniku, Od jego id po preferencje, do uprawnień.
Singleton +. Jeden użytkownik jeden obiekt.
Chciałbym teraz wiedzieć jakie są argumenty osób, tak bardzo nienawidzących singletona, przemawiające za tym żeby nie używać singletona w owych sytuacjach albo wskazać inne rozwiązania które owy problem rozwiążą.
Przyznam, że nie jestem super specem od znajomości mnóstwa Wzorców Projektowych. Chętnie poznam nowe rozwiązania i pomysły które oświecą i zbeszczeszczą moje dobre zdanie o singletonie

Rozwiązania które nie wchodzą w grę:
global - bron boze jak gdzies ponadpisuje egzemplarze klas
przekazywanie do kazdego obiektu wskaznika do tych klas - masochistą nie jestem aby każdy mój konstruktor składał się z bogatej listy argumentów.