Fabrikmethode [ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]


Übersicht

[klick] zum vergrössern
 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


[ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]
Stand: 31.03.2005, Autor: Jens Günther