Java Reference
In-Depth Information
gie über eine Aggregationsbeziehung verbunden und kann so die Strategie nutzen.
Die Aggregationsbeziehung erlaubt es nun dem Kontextobjekt, alle möglichen unter-
schiedlichen konkreten Strategien zu nutzen, solange die konkreten Strategien das
Interface IStrategie realisieren und den Vertrag des Interface nicht brechen. Alle
verschiedenen Algorithmen der Klassen KonkreteStrategieX (X = A..Z) imple-
mentieren dabei das definierte Interface IStrategie . Das Interface IStrategie
wird vom Kontext vorgegeben. Da jede konkrete Strategie dieses Interface erfüllen
muss, hängt der Kontext nicht von der jeweiligen konkreten Strategie ab. Das wird als
Dependency Inversion bezeichnet (siehe Kapitel 1.9.1). Das folgende Bild zeigt das
Klassendiagramm:
Kontext
«interface»
IStrategie
strategie
+ operation() : void
+ algorithmus() : void
ruft auf:
strategie.algorithmus()
KonkreteStrategieA
KonkreteStrategieB
+ algorithmus() : void
+ algorithmus() : void
Bild 4-36 Klassendiagramm des Strategie-Musters
Die Klasse Kontext aggregiert das Interface IStrategie . Das dieses Interface im-
plementierende Objekt ist damit Teil des Kontextobjekts und kann - falls gewünscht -
jederzeit zur Laufzeit ausgetauscht werden. Der Kontext muss für seine Umgebung
daher eine Möglichkeit bieten, um diese Referenz zu setzen. Dies wird auch als Konfi-
guration des Kontextes bezeichnet.
4.12.3.2 Teilnehmer
Folgende Klassen bzw. Interfaces sind an dem Entwurfsmuster beteiligt:
Kontext
Die Klasse Kontext aggregiert als Abstraktion das Interface IStrategie . In Java
enthält die Klasse Kontext dazu eine Referenz strategie vom Typ des Interface
IStrategie . Durch diese Referenz wird die zu verwendende Strategie festgelegt.
Durch strategie.algorithmus() wird die gewählte Strategie ausgeführt.
IStrategie
Das Interface IStrategie wird von allen unterstützten Algorithmen realisiert. Es wird
dazu verwendet, um einen durch eine der Klassen KonkreteStrategieX implemen-
tierten Algorithmus aufzurufen.
 
Search WWH ::




Custom Search