Java Reference
In-Depth Information
Die konkreten Produktklassen
KonkretesProduktA1
und
KonkretesProduktA2
realisieren das Interface
IAbstraktesProduktA
. Analog dazu gibt es die Produkt-
klassen
KonkretesProduktB1
und
KonkretesProduktB2
, die das Interface
IAbstraktesProduktB
realisieren. Wie im Klassendiagramm zu sehen ist, kennt ein
Client nur die Interfaces der Produkte. Aufgrund des liskovschen Substitutionsprinzips
werden jedoch die Methoden der konkreten Produktklassen aufgerufen.
Das Muster schreibt nicht vor, wie ein Client Kenntnis von einer konkreten Fabrik
erlangt. Damit ein Client aber nicht von einer konkreten Fabrik abhängig wird, sondern
flexibel mit verschiedenen konkreten Fabriken arbeiten kann, wurde im Klassendia-
gramm die Methode
setFabrik()
des Clients eingeführt. Damit kann von außen
dem Client eine konkrete Fabrik übergeben werden, mit der er dann arbeitet, um Pro-
dukte zu erzeugen. Diese Vorgehensweise entspricht dem Prinzip
Dependency In-
jection
mit Hilfe einer Setter-Methode (siehe Kapitel 1.10.2). Das Programm kennt die
entsprechende konkrete Fabrik nicht und hängt damit nicht von deren Ausprägung ab.
4.19.3.2 Teilnehmer
Die Teilnehmer des Entwurfsmusters Abstrakte Fabrik werden im Folgenden kurz vor-
gestellt:
IAbstraktesProduktX
Das Interface
IAbstraktesProduktX
(
X
= A..Z
) definiert die Schnittstelle einer
Produktart
X
und damit die Schnittstelle für ein bestimmtes konkretes Produkt dieser
Art.
IAbstrakteFabrik
Das Interface
IAbstrakteFabrik
definiert die Schnittstelle für konkrete Fabriken.
Für jede Produktart, die zu einer Produktfamilie gehört, wird in der Schnittstelle eine
Erzeugungsmethode vorgesehen.
KonkretesProduktXY
Eine Klasse
KonkretesProduktXY
(
X = A..Z, Y = 1..n
) definiert eine Variante
Y
der Produktart
X
und realisiert das Interface
AbstraktesProduktX
. Ein konkretes
Produkt
XY
gehört zur Produktfamilie Y und wird durch die entsprechende konkrete
Fabrik
Y
erzeugt.
KonkreteFabrikY
Eine Klasse
KonkreteFabrikY
(
Y = 1..n
) implementiert das Interface
IAbstra-
kteFabrik
und instanziiert in den Erzeugungsmethoden konkrete Produkte
XY
, die
zur Produktfamilie
Y
gehören.
Client
Ein Client benutzt die Schnittstellen der abstrakten Fabrik und der abstrakten Pro-
dukte. Er besitzt eine Referenz, die zur Laufzeit auf eine konkrete Fabrik zeigt, um die
Produkte einer Produktfamilie zu erzeugen.
Search WWH ::
Custom Search