![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jak go ulepszyc bym nie musial deklarowac w kazdej klasie public static $instance? jesli usune deklaracje tych zmiennych statycznych z klas to wtedy tworzy mi singleton zamiast klasy tej co trzeba (IMG:style_emoticons/default/biggrin.gif) (ew w przypadku klasy trzecia utworzy mi klase druga). Ten post edytował Orzeszekk 7.11.2011, 11:46:45 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hmm no nie dziwne - jeśli nie dasz w każdej klasie $instance to będziesz się z każdej odwoływał zawsze do tego samego (IMG:style_emoticons/default/smile.gif) oto w sumie chodzi w staticach (IMG:style_emoticons/default/haha.gif)
Moim zdaniem powinno się dawać statyczne $intance dla każdej klasy - sama funkcja typu "getInstance" może być dziedziczona. To i tak mniej a na bank będzie działać. Drugim rozwiązaniem jest zrobienie statycznej tablicy "instancji" - wtedy w get() odwołuj się do $instance[self::$nazwa] - To powinno troszkę pomóc i nie byłoby potrzeby dawać $instance w tych klasach. (IMG:style_emoticons/default/wink.gif) ALBO: Zupełnie inne podejście (IMG:style_emoticons/default/smile.gif) Po co robić rozszerzalny singleton, z którego musiała będzie dziedziczyć każda klasa by była singletonem... Można zrobić inaczej (IMG:style_emoticons/default/wink.gif) Zróbmy tak by dowolna klasa mogła być traktowana jako singleton ;P Zróbmy fabrykę singletonów (IMG:style_emoticons/default/wink.gif)
Zamiast używać wtedy a::getInstance(); używamy singleton::getInstance('a'); - to daje nawet więcej możliwości ;P Co Ty na to? Ten post edytował Sephirus 7.11.2011, 12:34:02 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Fabryka singletonow chyba nie zapewnia ze te klasy tworzone jako singletony maja tylko jedna instancje? wciaz mozna je utworzyc konstruktorem.
fabryki singletonow uzywam :] dla klas gdzie musi byc np. po jednej instancji singletona dla kazdego ID, wtedy tez robie taka tablice jak ty. Tylko ze wtedy ta fabryka singletonow jest definiowana w ciele tej samej klasy ktorą zwraca wiec moge zrobic chroniony konstruktor. Myslalem nad czyms zeby tworzyc static protected $instance zaraz przed wywolaniem konstruktora w singletonie, jakos dynamicznie, ale z tego co widze nie da się. tablica statyczna $instance chyba jeszcze bardziej spowolni ten singleton bo za kazdym razem trzeba bedzie wywołac funkcje get_called_class. skoro nie ma lepszego rozwiazania to bede dodawal singletony recznie (IMG:style_emoticons/default/biggrin.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 13:24 |