Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Singleton w większości klas
-lukasamd-
post 11.03.2010, 08:40:51
Post #1





Goście







Witam,
mam pytanie odnośnie wzorca singleton. Jak na moje potrzeby, będę go chyba używał w większości klas w projekcie.
No i teraz pytanie: czy jest sens się powtarzać i w każdej klasie wklepywać odpowiedni kod? No chyba nie bardzo.

Jak więc to zrealizować?
Myślałem o tym, aby zrobić, ażeby konstruktory każdej klasy zawierały opcjonalny pierwszy albo ostatni parametr, określający, czy ma być używany singleton czy nie.

Pytanie: jak to w ogóle zrealizować? Wszystko do klasy abstrakcyjnej (o ile dobrze rozumiem jej założenia - w OOP raczkuję)?
Go to the top of the page
+Quote Post
pablo89pl
post 11.03.2010, 09:33:19
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 19
Dołączył: 7.09.2009
Skąd: Rzeszów

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


Klasa abstrakcyjna zdefiniuje CI tylko metody ktore klasa dziedzicząca po niej musi zawierać...
Ogólnie powiedz po co chesz stosowac singletona, zalezy od wykorzystania, ale ogólnie nie polecałbym, można zawsze inaczej coś zrobić, ale to neich się wypowiedzą guru...

Ale jak juz chcesz miec w każdej klasie to mozesz dodać na dzieńdobry pierwszy parametr okreslajacy czy dac tego singa, i w kazdej klasie w konstruktorze sprawdzanie czy ten pierwszy parametr jest true(wtedy robisz singla) albo false(wtedy robisz nowa kopie)
Go to the top of the page
+Quote Post
ucho
post 11.03.2010, 09:59:35
Post #3





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

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


Najwyraźniej nie zrozumiałeś wzorca skoro nie wiesz jak go zaimplementować. Singleton praktycznie w każdym języku wygląda tak samo: konstruktor z modyfikatorem private/protected, prywatna statyczna zmienna 'instance' zainicjalizowana nullem, publiczna statyczna metoda getInstance(), która w razie potrzeby tworzy instancje, zapisuje ją do zmiennej i zwraca.
Z singletonem jest tylko jeden malutki problem - to horror w przypadku testowania. Jako, że nie ma żadnego wygodnego frameworka DI dla PHP (APC i podobne zjadają komentarze do pól i klas, w których są metadane :/) to zamiast singletonów proponuje wzorzec Registry.

Edit: Co do powtarzania kodu odpowiedzialnego za singleton - osobiście nie widzę w tym problemu, ale z łatwością znajdziesz kilka różnych implementacji bazowego singletona np. http://noteslog.com/post/yet-another-singl...ass-in-php-5-3/ .

Ten post edytował ucho 11.03.2010, 10:04:46
Go to the top of the page
+Quote Post
-lukasamd-
post 11.03.2010, 10:02:51
Post #4





Goście







No właśnie w sposób opisany przez ucho chcę go wykorzystać, no i w celu minimalizacji obciążenia.

@pablo89pl:
Tak, z tym nie ma problemu, ale myślę, że można to zrobić jakoś bez powtarzania się w każdej klasie (jakoś automatyczne realizowanie - tyle tylko, że wszystkie klasy muszę wtedy iść przez nadrzędną, która sprawdza to).
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:35