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