Java Reference
In-Depth Information
klasse aller konkreten Produkte sein. Es könnte auch eine Schnittstelle IProdukt
sein, die von den konkreten Produkten implementiert wird. Für jede Produktklasse wird
eine Klasse KonkretesProduktX eingeführt. Von diesen konkreten Produktklassen
sollen Objekte erzeugt werden können.
Die Klasse Erzeuger definiert eine sogenannte Fabrikmethode, die dem Muster den
Namen gab. In einer Fabrikmethode werden Objekte erzeugt und als Ergebnis zurück-
gegeben. In der Klasse Erzeuger wird nur die Schnittstelle der Fabrikmethode defi-
niert: Der Rückgabetyp der Fabrikmethode ist vom Typ Produkt und die Fabrikmetho-
de ist abstrakt, da hier der Typ des zu erzeugenden Produkts noch nicht bekannt ist.
Konkrete Produkte werden durch den Aufruf der überschreibenden Fabrikmethode
einer Unterklasse der Klasse Erzeuger geschaffen. Die Fabrikmethode einer Unter-
klasse der Klasse Erzeuger kapselt die Erzeugung eines entsprechenden konkreten
Produkts.
Für jede Produktklasse KonkretesProduktX wird eine Unter-
klasse KonkreterErzeugerX der Klasse Erzeuger eingeführt,
welche die abstrakte Fabrikmethode überschreibt.
Somit können verschiedenartige Erzeugungsprozesse durchgeführt werden. Die An-
wendung kennt nur die abstrakten Klassen und kennt die zu generierende konkrete
Ausprägung des Produkts nicht. Der Typ der zu erzeugenden Objekte ist also zur
Kompilierzeit nicht bekannt.
Das folgende Bild zeigt das Klassendiagramm des Fabrikmethode-Musters:
Erzeuger
{abstract}
Produkt
{abstract}
+operation : void
+ fabrikmethode() : Produkt
KonkretesProduktX
KonkreterErzeugerX
+fabrikmethode() : Produkt
return
new KonkretesProduktX()
«Create»
Bild 4-58 Klassendiagramm des Fabrikmethode-Musters mit abstrakten Klassen
Eine Anwendung des Fabrikmethode-Musters, die im Klassendiagramm nicht darge-
stellt ist, besitzt typischerweise eine Referenz vom Typ des abstrakten Erzeugers. Wie
diese Referenz gesetzt wird, ist durch das Muster nicht festgelegt. Zeigt die Referenz
zur Laufzeit der Anwendung auf einen konkreten Erzeuger und wird die Fabrikmethode
des referenzierten konkreten Erzeugers aufgerufen, so wird die entsprechende über-
schreibende Fabrikmethode aufgerufen. Diese erzeugt nun die entsprechenden kon-
Search WWH ::




Custom Search