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