Java Reference
In-Depth Information
4.19.3.3 Dynamisches Verhalten
Das dynamische Verhalten der Teilnehmer des Musters Abstrakte Fabrik wird mit Hilfe
des Sequenzdiagramms in Bild 4-61 beschrieben:
:Main
:Client
k1:KonkreteFabrik1
k2:KonkreteFabrik2
setFabrik(k1
)
erzeugeProduktA(
)
erzeugeProduktA()
erzeugeProduktB()
«Create»
setFabrik(k1)
:
KonkretesProduktA1
«Create»
:KonkretesProduktB1
erzeugeProduktB()
setFabrik(k2
)
setFabrik(k2)
erzeugeProduktA()
«Create»
:KonkretesProduktA2
erzeugeProduktA()
erzeugeProduktB()
«Create»
:
KonkretesProduktB2
erzeugeProduktB()
Bild 4-61 Sequenzdiagramm des Musters Abstrakte Fabrik
Zuerst wird dem Client die zu verwendende konkrete Fabrik mit Hilfe der Methode
setFabrik()
übergeben. Der Client kennt nur die Schnittstelle
IAbstrakte-
Fabrik
, weiß also nicht, welche konkrete Fabrik übergeben wurde. Er erzeugt an-
schließend zwei Produkte vom Typ
IAbstraktesProduktA
und
IAbstraktesPro-
duktB
durch Nutzung der Schnittstellenmethoden
erzeugeProduktA()
und
erzeu-
geProduktB()
. Da dem Client ein Objekt
k1
der Klasse
KonkreteFabrik1
als
aktuell zu nutzende Fabrik übergeben wurde, werden Instanzen der Klassen
Konkre-
tesProduktA1
und
KonkretesProduktB1
erzeugt. Der Client arbeitet also zu die-
sem Zeitpunkt mit Produkten der Produktfamilie 1.
Im nächsten Teil des Sequenzdiagramms wird vom Client ein Objekt der Klasse
KonkreteFabrik2
genutzt, da die Referenz des Clients durch Aufruf der Methode
setFabrik()
geändert wurde und nun auf das Objekt
k2
zeigt. Weil der Client ab
diesem Zeitpunkt also die konkrete Fabrik
k2
benutzt, werden durch die Aufrufe der
entsprechenden Methoden Instanzen der Klassen
KonkretesProduktA2
und
KonkretesProduktB2
erzeugt. Jetzt arbeitet der Client also mit Produkten der Pro-
duktfamilie 2.
4.19.3.4 Programmbeispiel
Das Muster Abstrakte Fabrik soll anhand eines einfachen Beispiels beschrieben wer-
den, das bereits in der Einleitung zu diesem Muster kurz skizziert wurde: Es werden
die zwei Produktarten Schrauben und Muttern betrachtet. Konkrete Produkte müssen
jeweils das gleiche Gewinde haben, um miteinander genutzt werden zu können. Daher
muss eine Fabrik immer die gleiche Produktfamilie erzeugen, d. h. entweder M6-
Search WWH ::
Custom Search