Java Reference
In-Depth Information
4.12.4
Einsatzgebiete
Das Entwurfsmuster Strategie ist einzusetzen, wenn eine Anwendung über mehrere
alternative Strategien verfügt, zum Erreichen eines bestimmten Ergebnisses zu einer
bestimmten Zeit aber nur eine davon benötigt. Der entsprechende Algorithmus soll von
der Umgebung ausgetauscht werden können.
Ein gutes Beispiel aus der Praxis sind die Klassendefinitionen der grafischen Benut-
zeroberflächen von Java. Das Entwurfsmuster Strategie wird hierbei zur Delegation
des Layouts von AWT- oder Swing-Komponenten an entsprechende Layoutmanager
( BorderLayout , FlowLayout usw.) verwendet.
Die Beziehung zwischen View und Controller im MVC-Muster (siehe Kapitel 5.6) kann
mit dem Strategie-Muster entworfen werden. Die Verwendung des Strategie-Musters
erlaubt es der Umgebung, den Controller - und damit auch die Strategie der View -
während der Laufzeit auszuwechseln. Dadurch kann die View ihr Verhalten ändern.
4.12.5
Bewertung
4.12.5.1 Vorteile
Die folgenden Vorteile werden gesehen:
x Das Strategie-Muster kann wesentlich flexibler eingesetzt werden als eine Lösung,
bei der die unterschiedlichen Algorithmen in Unterklassen der Kontextklasse reali-
siert werden. Bei dieser Lösung muss man eine Methode der Basisklasse in einer
Unterklasse statisch überschreiben, wenn man sie variieren möchte.
x Durch die Verwendung einer Schnittstelle ist der Kontext nur vom Interface abhän-
gig und nicht von dessen Implementierung ( Dependency Inversion ).
x Eine ganze Familie von Algorithmen ist möglich. Jeder Algorithmus ist für sich ge-
kapselt und hat dieselbe Schnittstelle. Dadurch ist er flexibel zur Laufzeit austausch-
bar. Ein gekapselter Algorithmus kann leichter wiederverwendet werden.
x Es kann Code eingespart werden, wenn nicht alle Strategien gleichzeitig benötigt
werden.
x Mehrfachverzweigungen können vermieden werden, was die Übersichtlichkeit des
Programmtextes erhöht.
4.12.5.2 Nachteile
Die folgenden Nachteile werden gesehen:
x Von Nachteil ist, dass eine Applikation die unterschiedlichen Strategien eines Kon-
textobjekts kennen muss, um das Kontextobjekt passend initialisieren bzw. konfigu-
rieren zu können. Diese Applikation muss also das Wissen besitzen, in welcher Si-
tuation welche Strategie angebracht ist.
x Es werden viele, oft kleine Klassen geschrieben.
Search WWH ::




Custom Search