![]() |
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 18:48 |