hkl: Singletons und abtrakte Fabriken

Beitrag lesen

Hallo !

Bei<http://de.wikipedia.org/wiki/Viererbande_%28Softwareentwicklung%29@tile=Gamma et al.> wird der Kontruktor protected deklariert.
In dem Beispiel wird der Konstruktor private deklariert.

Das halte ich, zumindest fuer viele Anwendungen, fuer unguenstig und zwar aus folgendem Grund:

Unter C++ habe ich oft "Abstrakte Fabrik"- Muster verwandt und zwar unter Einsatz von Singletons. Gamma et al nennen konkrete Fabriken als Beispiel fuer Singletons.
Schoen, aber der Client soll die Schnittstelle der abstrakten Fabrik nutzen, also doch wohl auch um uebrhaupt eine Referenz auf die Fabrik zu erhalten.

Wenn man aber den Kontruktor der abstrakten Fabrik protected deklariert kann eine abgeleitete konkrete (Singleton-)Klasse ihn verwenden wenn der Mechanismus der Instanzzuweisung im Konstruktor (!) der abstrakten Klasse  passiert.

Das ist zugegebermassen ein etwas kurioses Konstrukt - eher ein "Nullaton" als ein Singleton :-) - aber es kapselt ganze Subsysteme weg.

Damit das fuer den Client voellig transparent ist, kann man die Instanz der konkreten Kindklasse ( unter C++ ) in der Implementierungsdatei zum Programmstart erzeugen.
Wenn man das moechte.

Sieht jemand einen technischen Grund warum der Konstruktor in dem PHP5-Beipiel private deklariert wird ?

Methodisch koennte man natuerlich einwenden, dass sonst das Singleton-Konzept verwaessert wuerde und man die Klasse gegen missbraeuchliche Vererbung schuetzen moechte, aber ich denke abstrakte Fabriken lassen sich gar nicht sinnvoll realisieren, oder ?

Zumal sich hierbei zur Laufzeit auch nur ein Exemplar genau einer Kindklasse in dieser Weise "verankern" kann.

Gruss

Holger

hi,

Singleton-Patterns*
* oder gibt es das mitterweile?

http://www.php.net/manual/de/language.oop5.patterns.php

gruß,
wahsaga