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