Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Po jednej instancji obiektów klas
Martio
post
Post #1





Grupa: Zablokowani
Postów: 167
Pomógł: 2
Dołączył: 15.02.2004

Ostrzeżenie: (30%)
XX---


Doczytałem się o wielu zaletach używania wzorca Singleton. Jednak nigdzie o jego wadach. Czy jest on tak doskonały, że nie posiada wad? Jeżeli jednak takowe posiada, to jakie?

Jak rozwiązanie jest bardziej optymalne i wydajne chcąc uruchomić tylko jedną jedyną instancję każdej klasy? Czy użycie wzroca Singleton czy Register (rejestr, do którego są rejestrowane wszystkie obiekty)? A może macie inne, lepsze rozwiązania na tworzenie po jednej instancji obiektu klasy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sf
post
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Na początku w aplikacji posiadałem kilka singletonów ( praktycznie wszędzie ), ale z czasem doszedłem do wniosku, że singletony są do pupy i można sobie doskonale radzić bez nich.

Tak naprawdę pytanie jest czy naprawdę potrzebujesz zabezpieczyć daną klasę by powstał tylko jeden obiekt i ani jeden więcej? Czy nie lepiej po prostu przekazywać dany obiekt ( np. request, response , currentUser ... ) do poszczególnych części aplikacji, które z tego korzystają ( w phiend2 patrz context ). Ktoś sobie może stworzyć drugi obiekt request w środku akcji, ale czy to mu coś da? Po prostu to nic mu nie da i tyle ;-)

Aktualnie singleton wykorzystuje tylko w przypadku połączenia z bazą danych.

Przy okazji, jeśli w środku akcji stosujesz np. $oRequest = Request::getInstance() ... a po pewnym czasie stworzysz sobie inną klasę Request2 ... to teraz sobie wyobraź, że wszędzie, we wszystkich akcjach będziesz musiał zmieniać nazwę... porażka :/ Dlatego lepiej mieć jedno miejsce gdzie się tworzy obiekt na bazie jakieś klasy i w pozostałych miejscach się z niego korzysta.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 03:18