|
Abb. 1: Das FactoryMethod Design Pattern
|
Das auch als Virtueller Konstruktor bekannte FactoryMethod-Pattern ermöglicht die Erzeugung von Objekten noch
unbekannter Klassen. Dazu wird in einer abstrakten «Creator»-Klasse eine FactoryMethod definiert, die
als Rückgabewert ein ebenfalls abstraktes «Product» besitzt. «ConcreteCreator»-Klassen, die
den abstrakten «Creator» beerben, implementieren dann diese Methode und geben ein für sie spezifisches
«ConcreteProduct» zurück.
Ein Client dieses Systems arbeitet nur auf den Schnittstellen, die durch den «Creator» bzw. das
«Product» angeboten werden. Es ist dabei möglich, dass der Client nicht in Kontakt mit dem «Product»
kommt, und zwar dann, wenn der «Creator» nur spezielle Hilfsobjekte für seine Arbeit benötigt.
Folgende Anwendungsfälle lassen sich skizzieren:
- eine Klasse kennt die Objekte nicht, die sie erzeugen muss,
- zu erzeugenden Objekte sollen durch Unterklassen festgelegt werden,
- Zuständigkeiten sollen an Hilfsunterklassen delegiert werden und diese Klassen existieren in Abhängigkeit zu den
speziellen konkreten Erzeugern.
Die Stereotypen noch einmal im Überblick:
- «Product»
- definiert die Klasse des von der FactoryMethod erzeugten Objekts.
- «ConcreteProduct»
- implementiert die Produktschnittstelle.
- «Creator»
- spezifiziert die FactoryMethod, die ein Objekt entsprechend des Typs des «Product»
zurückgibt. Es ist durchaus möglich, das eine Defaultimplementation der FactoryMethod ein vordefiniertes
«ConcreteProduct» erzeugt.
- «ConcreteCreator»
- überschreibt die FactoryMethod zur Zurückgabe eines speziellen «ConcreteProduct».
Quelle: E.Gamma, R.Helm, R.Johnson, J.Vlissides: Entwurfsmuster, Addison Wesley Verlag 2004
|