Post
#1
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Od ostatniego czasu zauważam wielką nagonkę na Singletona. Aż czasem głupio mi poradzić komuś w temacie by użył singletona bo zaraz pod spodem sypią sie posty typu
"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:
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . 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. Ten post edytował wookieb 8.06.2009, 07:19:26 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%)
|
Ja chciałbym się przyłączyć do ~LBO żeby nie wyszło że prowadzi samotną krucjatę @mike, dzięki wielkie za wsparcie - jak zwykle, z Twojej strony, trafnie i konkretnie. Naprawdę bardzo doceniam. P.S. ~LBO Twoja sygnaturka mnie powaliła. Git. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Starałem się Strasznie nie podoba mi się wstrzykiwanie wskaźników do klas z tego wzgledu, ze jest to bardzo niewygodne. A juz organizacja wstrzykiwan przez xmle (o ile dobrze zrozumiałem "na szybko") jest głupotą. Głupotą? A możesz poprzeć to jakimiś argumentami? Bo ja dzięki tej głupocie, osiągam tyle samo co przy użyciu Singletona, ale bez jego przykrych naleciałości. Co do twojego rozwiązania. Wiele to od Singletona nie odbiega. Teraz masz Rejestr w czystej jego postaci - drugi, zaraz po Singletonie, niezbyt ciekawy pod względem inżynieryjnym wzorzec. Na blogu Federico Cargneluttiego - bardzo cenię sobie tego autora, mnóstwo ciekawych artykułów m.in. o wzorcach - znajdziesz kilka słów na ten temat. Mam ogromną nadzieję, że po wydaniu Symfony 2.0 wraz z autorskim kontenerem IoC programiści zaczną wnikliwiej przyglądać się pewnym problemom. Pozdrawiam, Alan Ten post edytował LBO 11.06.2009, 23:04:35 |
|
|
|
wookieb Singleton a inne rozwiązania 7.06.2009, 22:27:51
Crozin CytatOd ostatniego czasu zauważam wielką nagonkę n... 7.06.2009, 22:43:13
kbsucha Cytat(wookieb @ 7.06.2009, 23:27:51 )... 7.06.2009, 22:46:31
LBO Widzisz, tu nie chodzi do końca o to gdzie się sin... 7.06.2009, 23:13:31 
dr_bonzo Cytat(LBO @ 8.06.2009, 00:13:31 ) Wid... 8.06.2009, 07:41:45
wookieb Cytat(kbsucha @ 7.06.2009, 23:46:31 )... 8.06.2009, 07:20:55
erix Cytatprzekazywanie do kazdego obiektu wskaznika do... 8.06.2009, 07:53:21
LBO Cytat@LBO: to prosze, pokaz jak rozwiazujesz probl... 8.06.2009, 08:10:38
mike Ja chciałbym się przyłączyć do ~LBO żeby nie wyszł... 8.06.2009, 09:13:44
orglee A co w takim razie z menadżerem bazy danych. Skoro... 8.06.2009, 15:57:38
wookieb Strasznie nie podoba mi się wstrzykiwanie wsk... 11.06.2009, 21:37:59
wookieb Cytat(LBO @ 11.06.2009, 23:51:30 ) G... 12.06.2009, 08:31:39
LBO Cytat(wookieb @ 12.06.2009, 09:31:39 ... 12.06.2009, 09:54:42
wookieb Mylisz się. Wrzucam tylko te które używa... 12.06.2009, 10:16:59
rzymek01 Ze swojej strony chciałbym się dowiedzie... 12.06.2009, 11:25:33
fifi209 @up
Ta klasa rejestruje zmienne, usuwasz singleto... 12.06.2009, 11:39:36
wookieb Cytat(fifi209 @ 12.06.2009, 12:39:36 ... 12.06.2009, 12:20:31 
fifi209 Cytat(wookieb @ 12.06.2009, 13:20:31 ... 12.06.2009, 12:23:07
wookieb Cytat(fifi209 @ 12.06.2009, 13:23:07 ... 12.06.2009, 12:29:23 
fifi209 Cytat(wookieb @ 12.06.2009, 13:29:23 ... 12.06.2009, 12:40:38
ernie242 To może być dobra wiadomość:
C... 18.06.2009, 19:55:59
wookieb Pozwolę sobię odświeżyć temat.
Ostatecznie wybrałe... 6.07.2009, 22:02:05 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 18:50 |