homeSoftwaredesign Softwaredesign: Strategie Prof. Dr. Uwe Schmidt FH Wedel

Strategie

weiter

weiter

Strategie

Klassifizierung
objektbasiertes Verhaltensmuster
weiter
Zweck
Definiere eine Familie von Algorithmen und mache sie untereinander austauschbar.
Der Algorithmus kann dynamisch vom Klienten ausgewählt werden
weiter
merke
Funktionen als Parameter in reinen OOP-Sprachen (Java, Eiffel, nicht C++)
weiter
Alias
strategy
policy
weiter
Motivation
Sortierung:
Ein Klient hat ein Feld das sortiert werden soll
der Sortieralgorithmus soll aber variiert werden können
weiter
Beispiel
weiter
Anwendbarkeit
Parametrisierung mit Algorithmen
Prozeduren und Funktionen als Parameter
Prozeduren und Funktionen in Datenstrukturen
dynamische Binden wird zum Parametrisieren ausgenutzt
weiter
Struktur
Strukturdiagramm
weiter
Teilnehmer
  Command
Schnittstelle für die Algorithmus-Familie
  Command[1-2]
konkreter Algorithmus doIt wird implementiert
  Context
wird mit einem konkreten Algorithmus konfiguriert
und ruft diesen aus seinen Methoden heraus auf
operation() spielt die gleiche Rolle wie die Schablonenmethode im gleichnamigen Muster
weiter
Konsequenzen
Wiederverwendung von Algorithmen
flexiblerer Alternative zu Unterklassenbildung
wenn Strategie-Objekte zustandslos sind, können sie gemeinsam genutzt werden
--> Fliegengewicht
Kommandos kombiniert mit forall Funktionen zum Verarbeiten aller Elemente eines Containers sind oft eleganter und effizienter als Iterator-Anwendungen
weiter
Implementierung
die Referenz im Strukturmuster kann auch temporär sein
Referenzen als lokale Variable oder aktueller Parameter
Beispiel in Java
weiter
Beispiele
Beispiel für die unabhängige Auswahl eines Sortierers und einer Vergleichsfunktion
Verarbeitung aller Elemente in Containern
die Art der Container kann variieren
die Verarbeitung kann variieren
beide Teile können frei kombiniert werden
weiter
Bekannte Verwendungen
Umsetzung der funktionalen Programmierung in OOP
Anwendung in Containern für beliebige Elemente, bei deren Implementierung bestimmte Eigenschaften der Elemente für den Container notwendig sind, zum Beispiel ein Gleichheitstest, eine Ordnungsrelation oder eine hash-Funktion.
weiter
verwandte Muster
für zustandslose Algorithmen
weiter
mehrere Algorithmen für unterschiedliche Ausprägungen einer Klasse werden in einem Besucher zusammengefasst
weiter
weniger flexibel
Vergleich
weiter

Letzte Änderung: 21.03.2013
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel