Java Reference
In-Depth Information
Im Bild 4-59 ruft ein Client die Methode
fabrikmethode()
des ihm bekannten Er-
zeugers
e1
auf. Daraufhin wird vom Objekt
e1
der Klasse
KonkreterErzeugerA
eine Instanz vom Typ
KonkretesProduktA
erzeugt und an den Client zurück-
gegeben. Wird zu einem späteren Zeitpunkt vom Client beispielsweise die Fabrikme-
thode des Objekts
e2
der Klasse
KonkreterErzeugerB
aufgerufen, wird eine In-
stanz vom Typ
KonkretesProduktB
erzeugt. Je nachdem, welcher konkrete Erzeu-
ger verwendet wird, werden also verschiedene Objekte erzeugt.
Der Client steht im Bild 4-59
stellvertretend für eine Anwendung (beispielsweise für ein
Framework), die konkrete Produkte flexibel erzeugen und nutzen will. Er ist nicht Be-
standteil des Musters. Das Muster lässt es auch offen, wie ein Client Kenntnis über
einen konkreten Erzeuger erlangt.
4.18.3.4 Programmbeispiel
In diesem Programmbeispiel entsprechen die Klassennamen den genannten Teilneh-
mern. Die abstrakte Klasse
Erzeuger
definiert mit der Fabrikmethode die Schnittstelle
zur Erzeugung von konkreten Produkten:
// Datei: Erzeuger.java
public abstract class Erzeuger
{
// Kopf der Fabrikmethode
public abstract Produkt erzeugeProdukt();
}
In der Unterklasse
KonkreterErzeugerA
werden Objekte der Klasse
Konkretes-
ProduktA
erzeugt:
// Datei: KonkreterErzeugerA.java
public class KonkreterErzeugerA extends Erzeuger
{
public Produkt erzeugeProdukt()
// Ueberschreiben der Fabrikmethode
{
return new KonkretesProduktA();
}
}
In der Unterklasse
KonkreterErzeugerB
werden Objekte der Klasse
Konkretes-
ProduktB
erzeugt:
// Datei: KonkreterErzeugerB.java
public class KonkreterErzeugerB extends Erzeuger
{
public Produkt erzeugeProdukt()
// Ueberschreiben der Fabrikmethode
{
return new KonkretesProduktB();
}
}
Search WWH ::
Custom Search