![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 24.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
mam problem z singletonem przez dziedziczenie a mianowicie napisalem taki kod
ale podczas pobierania referencji przez funkcje get_instance() tworzy sie nowy obiekt z tym ze jest to 'system' a nie 'innysystem' wiec jak to najprosciej naprawic by we wszystkich klasach potomnych nie trzebabylo wklepywac tej samej funkcji get_instance() ? -------------------- If you can't find a program that does what you want it to do, then write your own.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Niestety musisz recznie dopisac get_instance() dla kazdej z klas pochodnych. Jako ze nie przeciazyles tej metody w klasie pochodnej, get_instance() bedzie zawsze wywolywana dla obiektu klasy nadrzednej.
Ten post edytował dr_bonzo 20.05.2005, 19:24:57 -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 16.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Co gorsza, nie da się (przynajmniej ja nie mogłem) pobrać nawet nazwy tej "rzeczywistej" klasy.
-------------------- Com powiedział, powiedziałem.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Nawet get_class() nie dziala
![]() -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 24.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
jedyne co mi sie udalo uzyskac to tylko to
moze ktos ma lepszy pomysl na dziedziczenie singletona ![]() -------------------- If you can't find a program that does what you want it to do, then write your own.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
No i chcesz stworzyc instancje klasy 'innysystem'
co konczy sie wywolaniem:
Aby to wywolanie bylo mozliwe -- konstruktor klasy innysystem musi byc publiczny, a jak jest publiczny to mozna stworzyc obiekt w sposob tradycyjny, co burzy koncepcje singletona. A poza tym skoro juz implementujesz metode get_instance() w klasie pochodnej to po prostu napisz ja tak jak w klasie 'system'. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
pisane w locie ale powinno zadzialac. widze ze piszac w pospiechu pomylilem tematy: http://forum.php.pl/index.php?showtopic=33537 Ten post edytował Bora 2.08.2005, 13:07:55 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 180 Pomógł: 0 Dołączył: 24.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
Hmm IMHO jest to błąd projektowy. Jeśli używać wzorca projektowego SINGLETON to tylko w ten sposób do jakiego jest zalecany, czyli do zwracania referencji obiektu i uniemożliwienie tworzenia nowych obiektów.
Jeśli już musisz dziedziczyć po jakieś klasie to lepiej rozbić tę klasę. IMHO będzie to lepsze rozwiązanie i czytelniejsze z projektowego punktu widzenia. -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
A co sądzicie o pomyśle na singletonFactory :?: Chyba wiadomo o co chodzi
![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 16:37 |