21. Januar 2013

Entwurfsmuster: Strategie

Das Verhaltensmuster "Strategie" (engl. Strategy-Pattern) findet seinen Einsatz in der Softwareentwicklung, wenn es darum geht, Algorithmen in Klassen zu kapseln und sie damit, abhängig vom Kontext, austauschbar zu machen. Die Anwendung bietet sich besonders dann an, wenn viele verwandte Klassen sich nur in ihrem Verhalten unterscheiden, welches durch das Pattern ausgelagert werden kann.

Die Verwendung dieses Patterns ist relativ simpel. Es muss nur, wie im unten stehenden Klassendiagramm verdeutlicht, eine einheitliche Schnittstelle definiert werden, die für alle Algorithmen einer Familie gilt. Ein Client kann dann diese verschiedenen Algorithmus-Implementieren nutzen, wobei diejenigen, die von der gleichen Schnittstelle erben, untereinander austauschbar sind.

Klassendiagramm des Strategie-Entwurfmusters

Vorteile:
  • Der Klient, der die Algorithmen nutzen soll, ist nur von der Schnittstelle und nicht von den konkreten Implementierungen abhängig.
  • Somit können verschiedene Algorithmen (auch zur Laufzeit) ausgewählt werden.
  • Daten, die vom Algorithmus verwendet werden, müssen dem Klienten nicht offen gelegt werden.
  • Aufwändige switch-Anweisungen zur Auswahl von Algorithmen können vermieden werden.
Nachteile:
  • Der Klient, der die Algorithmen nutzen soll, muss alle Algorithmen kennen, um eine Auswahl treffen zu können.
  • Es besteht ein gewisser Kommunikationsaufwand zwischen dem Klienten und der Strategie.
  • Die Schnittstelle muss für alle Algorithmen (egal wie komplex) einer Familie gleich sein. 

Ein Beispiel für die Verwendung dieses Entwurfsmuster wäre z.B. der Einsatz von Sortieralgorithmen, von denen es viele verschiedene Implementierungen, mit jeweils unterschiedlichen Vor- und Nachteilen gibt. Abhängig von den vorliegenden Daten, die sortiert werden sollen, kann es sinnvoll sein, den zu verwendenden Algorithmus frei wählen zu können.

Keine Kommentare:

Kommentar veröffentlichen