Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Singleton raz jeszcze
albrzykowski
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 5.02.2007

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


Witam,

Staram sie pogłębić swoją wiedzę na temat tego wzorca. Albo nie udało mi się trafić na dobre źróła, albo nie jest on dobrze opisany. Mam tu na myśli nie sposoby implementacji, bo tych jest bardzo wiele, bardziej natomiast interesuje mnie kwestia uznawania (nie ogólnie) Singleton-a za antywzorzec. Aby nie okazalo się zaraz, że jestem kompletnie nieobeznany z google, dodam, że wpisując w polską wyszukiwarkę singleton+ antywzorzec oczywiście zwracanych jest wiele wyników. Żaden jednak nie opisuje broblemu naprawdę szczegółowo, pomijając już kwestię przedstawienia w solidny, rzeczowy sposób alternatywnych rozwiązań.

Będę wdzięczny za Wasze opinie, linki do tematów etc.

Pozdrawiam.


--------------------
Debian Etch, MySQL 5, PHP 5, Apache 2, Eclipse PDT
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Mam tu na myśli nie sposoby implementacji, bo tych jest bardzo wiele
Akurat w przypadku singletona nie potrafię sobie wyobrazić innej implementacji niż "standardowa".

Co do "antywzorca". Singleton to tak w gruncie rzeczy "obiektowa reprezentacja zmiennej globalnej", a te jak dobrze wiadomo to w pewnym sensie zło wcielone. Możliwość uzyskania dostępu do obiektu z każdego miejsca aplikacji może (nie musi) powodować wiele "złych zjawisk" (że to tak dziwnie ujmę).
Go to the top of the page
+Quote Post
destroyerr
post
Post #3





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Dodatkowo stwarza problemy podczas testowania.
Co do alternatywnych rozwiązań to np. Inversion of Control.

Ten post edytował destroyerr 11.03.2010, 18:07:24
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Przecież Wikipedia jasno wypisuje problemy, których Singleton nastręcza.

Cytat(destroyerr @ 11.03.2010, 18:04:08 ) *
Co do alternatywnych rozwiązań to np. Inversion of Control.
IoC nie jest żadną alternatywą dla Singleton'a. Przecież to są kompletnie różne rzeczy.
Go to the top of the page
+Quote Post
destroyerr
post
Post #5





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Może napisałem zbyt ogólnie, więc wytłumaczę o co mi chodziło. DI jest jedną z implementacji IoC, a przy pomocy DI można zastąpić Singleton - tworząc jeden obiekt i przekazując go do innych obiektów, zgodnie z ich odpowiedzialnością. Pozbywamy się "obiektowej realizacji zmiennej globalnej" i można zacząć testować. Może to założenie, że skoro da się to załatwić z DI, to każda implementacja IoC to załatwi było błędne.
Tak to rozumiem, uważam, że jest to alternatywne rozwiązanie. Jeśli jednak nadal się pogrążam to chętnie dam się naprostować.
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nazywając singletona antywzorcem iż jest "zastępstwem" zmiennej globalnej, antywzorcem powinniśmy tak nazwać również Factory (jeżeli jest statyczne) oraz Registry (jeżeli jest statyczne).

Co do IoC irytuje mnie jedna rzecz, że pomimo tego iż ten wzorzec jest znany od dawna to nagle wszyscy się budzą i doznają wielkiego oświecenia, jakie to jest fajne. Czekam tylko jeszcze na to, jak ktoś powie o możliwości stworzenia dobrego EventDispatchera to będzie kolejny okres "odrodzenia" dla phpowców.

Ten post edytował wookieb 12.03.2010, 00:25:54


--------------------
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #7





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@albrzykowski - na forum są minimum 2-3 tematy wyczerpujące interesujące ciebie zagadnienie. Jest tam o zastępnikach i o antywzorcowatości Singletona.

@wookieb - ciekawe, ile osób też to widzi. Używam MVC, znam CMS - jestem na topie, modny i podążam za nowościami . Nie znam tego nowego MVC, ale chcę się nauczyć, bo dobre jest podobno. Słyszałem, że popularny jest Singleton, więc chcę zacząć go używać snitch.gif


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Cysiaczek @ 12.03.2010, 09:21:13 ) *
@wookieb - ciekawe, ile osób też to widzi. Używam MVC, znam CMS - jestem na topie, modny i podążam za nowościami . Nie znam tego nowego MVC, ale chcę się nauczyć, bo dobre jest podobno. Słyszałem, że popularny jest Singleton, więc chcę zacząć go używać snitch.gif
Takie koszta niskiego progu wejścia w PHP. Byle kto, może nagle pisać stronki bo wystarczy mu do tego trochę HTML'a i trochę PHP.
Żadnego przygotowania z teorii, algorytmiki, e.t.c. I później mamy ignorantów szukających szybkich efektów bez wysiłku.
Go to the top of the page
+Quote Post
wookieb
post
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(mike @ 12.03.2010, 09:58:13 ) *
Byle kto, może nagle pisać stronki bo wystarczy mu do tego trochę HTML'a i trochę PHP.
Żadnego przygotowania z teorii, algorytmiki, e.t.c. I później mamy ignorantów szukających szybkich efektów bez wysiłku.

Podłączam się.
Niestety nie chodzi tylko o programistów ale także o większość firm zajmujących się tym zagadnieniem.
Dodatkowym problemem jest jeszcze oczywiście lenistwo i cięcie kosztów, przez co wszyscy spotykamy prawie na każdym kroku kupę nad która można najwyżej popłakać.


--------------------
Go to the top of the page
+Quote Post
albrzykowski
post
Post #10





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 5.02.2007

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


Dzięki za wypowiedzi,

@Cysiaczek - wiem, że są tematy, niemniej być może nie trafiłem na żaden traktujący o tym bardziej poważnie. Niestety większość kończyła się albo luźnymi spostrzeżeniami, albo rozmowa schodziła (podobnie jest w tym wątku) trochę z tematu.

Z ciekawych propozycji natrafiłem na tą:
http://forum.php.pl/index.php?s=&showt...st&p=618559, niemniej też nie została zbytnio skomentowana.

Pracując do tej pory miałem kontakt (jeśli chodzi o poważniejsze rozwiązania) z ZF, Symfony, eZ Publish (pomijam Drupala ze względu na jego "specyficzną" podejście do OOP) i wszystkie powyższe korzystają z Singleton-a.

Podtrzymuję prośbę z mojego pierwszego postu, odnośnie konkretniejszych przykładów alternatywy dla Singleton-a zamiast teoretycznych rozważań.


--------------------
Debian Etch, MySQL 5, PHP 5, Apache 2, Eclipse PDT
Go to the top of the page
+Quote Post
Crozin
post
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
(...) wszystkie powyższe korzystają z Singleton-a.
I co z tego? To, że coś jest popularne nie oznacza, że jest dobre. Swoją drogą... w najnowszym Symfony (chodzi w sumie o wersję 2.0) nie widzę by z niego korzystano - chociaż nie sprawdzałem "ręcznie" każdego pliku, więc mogło coś mi umknąć.

Cytat
Podtrzymuję prośbę z mojego pierwszego postu, odnośnie konkretniejszych przykładów alternatywy dla Singleton-a zamiast teoretycznych rozważań.
To daj konkretny przykład, gdzie używasz singletona i chciałbyś go wyeliminować tą alternatywą.
Go to the top of the page
+Quote Post
mike
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


~albrzykowski musisz sobie uświadomić, że mówimy tutaj o wzorcach projektowych. Nie możesz więc odrzucać teorii bo tymże są właśnie wzorce.
Wzorzec jest to typowe rozwiązanie danego zagadnienia. Typowe czyli wypracowane na przestrzeni dłuższego czasu, wyrosłe z doświadczeń wielu ludzi.

Jeśli więc pytasz ogólnie o to czym można zastąpić Singletona, to bez uszczegółowienia przypadku użycia tego wzorca nikt Ci nic ciekawego nie powie.
Go to the top of the page
+Quote Post
albrzykowski
post
Post #13





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 5.02.2007

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


@Crozin - odnośnie SF, to nie wiedziałem, i pewnie postaram się dowiedzieć więcej na ten temat.
@mike - to prawda, założenia są tylko teoretyczne niemniej ciekawi mnie samo zastosowanie w praktyce alternatywnych rozwiązań.

Przyznam, że ze wszystkich podstawowych wzorców, ten przysparza mi najwięcej bolączki, choć może wydaje się najbardziej podstawowy poznawany w pierwszej kolejności.

Ten post edytował albrzykowski 12.03.2010, 15:32:45


--------------------
Debian Etch, MySQL 5, PHP 5, Apache 2, Eclipse PDT
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 Aktualny czas: 19.08.2025 - 07:23