Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 204 Pomógł: 0 Dołączył: 26.12.2003 Skąd: Rzeszów Ostrzeżenie: (0%)
|
Może mnie ktoś oświecić dlaczego używa się singletonów? np:
skoro to samo można osiągnąć w ten sposób?:
Widze jakie są różnice, jednak nie rozumiem dlaczego singletony są stosowane skoro zapis Foo::bar(); jest wygodniejszy i kod klasy krótszy... Czy za pomocą singletonów można zrobić coś, o czym nie wiem? |
|
|
|
![]() |
Post
#2
|
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%)
|
Ja preferuję tworzenie wewnątrz klasy metodę która zwróci jej instancję. Dzięki temu moge przesłać parametry, ale jeśli instancja już istnieje to będą one zignorowane. Normalnie mają wartość ustawioną na null. Można też zrobić funkcję która będzie tworzyła hash wartości parametrów i wrzucała do tablicy statycznej z kluczem o wartości hasha i wartością elementu jako referencję do potrzebnej instancji. Dzieki temu będziemy mogli utowrzyć kilka globalnych instancji z różnymi parametrami (choć nie wiem czy podawanie parametrów przy każdym wywołaniu funkcji byłoby rzeczą przyjemną (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ).
Wracając do tematu signleton vs. static, uważam że nie powinno się nadużywać statica, nie potrafie tego niestety uzasadnić (może przyjdzie ktoś mądrzejszy i wytłumaczy), ale mam dziwne wrażenie że jednak coś jest nie tak z tymi staticami, że ich nadurzycie może powodować spadek efektywności lub błędy, bo inaczej wszyscy by się na to rzucili, a jakoś tak się nie stało (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) (AFAIR). Zresztą nie widze żadnej zalety w korzystaniu z :: a -> jeśli chodzi o wygode, prawda, musze zadbać o ściągnięcie instancji w odpowiedni obszar zmiennych, ale jeśli pozwoli mi to zaoszczędzić troche czasu lub zbędnych kłopotów to wole jednak takie rozwiązanie. Musze przyznać że problem mnie zaintrygował, i teraz już sam jestem ciekaw jak to jest z tymi signletonami. Szkoda że nie mam większego doświadczenia z innymi językami obiektowymi, bo tak to cięzko mi cokolwiek powiedzieć aby nie być gołosłownym, same domysły (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
Ozzy PHP5 i Singletony 17.03.2004, 16:15:13
Cudi Sigleton pozwala Ci działać na jednej instancji da... 17.03.2004, 16:22:25
Ozzy tak, ale w php5 nie musze używać zmiennych globaln... 17.03.2004, 18:24:14
Cudi Singletony są zastępstwem dla obiektów globalnych ... 17.03.2004, 18:32:08
Ozzy Ja cię rozumiem, ale w php5 nie ma takiej potrzeby... 17.03.2004, 18:38:44
Simpson CytatJa cię rozumiem, ale w php5 nie ma takiej pot... 17.03.2004, 18:44:15
Ozzy Cytatw tej klasie znajduja sie zmienne ktore sa Ci... 17.03.2004, 18:50:55
Wankster Simpson: Ozzy mówił o PHP5, a tam możesz się odwoł... 17.03.2004, 18:51:45
Simpson a no to chyba ze tak. Nie znam aż tak dokłądnie ph... 17.03.2004, 18:53:10
Cudi Tak czy siak singleton może być przydatny, nie będ... 17.03.2004, 18:59:16
Ozzy CytatTak czy siak singleton może być przydatny
prz... 17.03.2004, 19:05:17
Cudi Potrzebna by była bardzo rozbudowana klasa, a Ty m... 17.03.2004, 19:55:29
Ozzy z tym się zgodzę, bo sam używam takiego rozwiązani... 17.03.2004, 20:28:38
Bora z static nie można przesadzać bo przez nadmierne u... 17.03.2004, 20:55:40
Ozzy Cytatz static nie można przesadzać bo przez nadmie... 17.03.2004, 21:13:37
Bora CytatCytatz static nie można przesadzać bo przez n... 17.03.2004, 21:24:31
Ozzy Bora: Foo::$bar do zmiennej i Foo::bar do stałej
... 17.03.2004, 21:56:36
Cudi Myśle że właśnie sam sobie odpowiedziałeś na swoje... 18.03.2004, 17:38:42
Balin czy moglibyscie podac linki do artykulow omawiajac... 18.03.2004, 19:07:33
Ozzy http://www.phppatterns.com/index.php/artic...ticle... 18.03.2004, 19:20:04
hawk Formalnie rzecz biorąc, singletony nie są potrzebn... 18.03.2004, 23:42:55
Ozzy CytatA poza tym, wielkie klasy z samymi metodami s... 19.03.2004, 08:02:40 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 19:29 |