![]() |
![]() |
![]()
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
|
|
|
![]() |
![]()
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ę). |
|
|
![]()
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 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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ć. |
|
|
![]()
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 -------------------- |
|
|
![]()
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ć ![]() -------------------- 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. |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
@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ć 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. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
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ć. -------------------- |
|
|
![]()
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
|
|
|
![]()
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ą.
|
|
|
![]()
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. |
|
|
![]()
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
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 07:23 |