Strategy Pattern

Strategy Pattern

Die Strategie (engl. Strategy) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Verhaltensmuster (Behavioural Patterns). Das Muster definiert eine Familie austauschbarer Algorithmen. Es ist eines der sogenannten GoF-Muster (siehe Viererbande).

Inhaltsverzeichnis

Verwendung

Strategie-Objekte werden ähnlich wie Klassenbibliotheken verwendet. Im Gegensatz dazu handelt es sich jedoch nicht um externe Programmteile, die als ein Toolkit genutzt werden können, sondern um integrale Bestandteile des eigentlichen Programms, die deshalb als eigene Objekte definiert wurden, damit sie durch andere Algorithmen ausgetauscht werden können.

Meistens wird eine Strategie durch Klassen umgesetzt, die eine bestimmte Schnittstelle implementieren. In Sprachen wie Smalltalk, in denen auch der Programmcode selbst in Objekten abgelegt werden kann, kann eine Strategie aber auch durch solche Code-Objekte realisiert werden.

Die Verwendung von Strategien bietet sich an, wenn

  • viele verwandte Klassen sich nur in ihrem Verhalten unterscheiden.
  • unterschiedliche (austauschbare) Varianten eines Algorithmus benötigt werden.
  • Daten innerhalb eines Algorithmus vor Klienten verborgen werden sollen.
  • verschiedene Verhaltensweisen innerhalb einer Klasse fest integriert sind (meist über Mehrfachverzweigungen) aber
    • die verwendeten Algorithmen wiederverwendet werden sollen bzw
    • die Klasse flexibler gestaltet werden soll.

UML-Diagramm

Datei:Strategie.png

Erklärung der Akteure

Die Klasse Strategie definiert nur eine Schnittstelle (Interface) für alle unterstützten Algorithmen. Die Implementierung der eigentlichen Algorithmen finden sich erst in den Ableitungen dieser (konkreteStrategie).

Der Kontext hält eine Member-Variable der Schnittstelle Strategie, wird aber mit einer Referenz auf das gewünschte konkrete Strategieobjekt belegt. Somit wird der Algorithmus über die Schnittstelle verwendet und dies ermöglicht auch ein Austauschen der Algorithmen zur Laufzeit.

Vorteile

  • Es wird eine Familie von Algorithmen definiert.
  • Es wird die Auswahl aus verschiedenen Implementierungen ermöglicht und dadurch erhöht sich die Flexibilität und die Wiederverwendbarkeit.
  • Es können Mehrfachverzweigungen vermieden werden und dies erhöht die Übersicht des Codes.
  • Strategien bieten eine Alternative zur Unterklassenbildung der Kontexte.

Nachteile

  • Klienten müssen die unterschiedlichen Strategien kennen, um zwischen ihnen auswählen und den Kontext initialisieren zu können.
  • Gegenüber der Implementierung der Algorithmen im Kontext, entsteht hier ein zusätzlicher Kommunikationsaufwand zwischen Strategie und Kontext.
  • Die Anzahl von Objekten wird erhöht.

Beispiel

Als Beispiel kann ein Steuerprogramm dienen, das die Berechnung von Steuersätzen möglichst in Strategie-Objekte auslagern sollte, um einfach länderabhängig konfigurierbar zu sein.

Ein anderes Beispiel wäre die Speicherung eines Dokuments oder einer Grafik in verschiedenen Dateiformaten.

Auch ein Packer, der verschiedene Kompressionsalgorithmen unterstützt, kann mit Hilfe von Strategie implementiert sein. Bei Java wird das Entwurfsmuster zum Beispiel zur Delegierung des Layouts von AWT-Komponenten an entsprechende LayoutManager (BorderLayout, FlowLayout etc.) verwendet.

Weitere Beispiele (außerhalb der OOP-Welt):

Verwandte Entwurfsmuster


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Strategy pattern — [ LePUS3 ( [http://lepus.org.uk/ref/legend/legend.xml legend] ) ] In computer programming, the strategy pattern (also known as the policy pattern) is a particular software design pattern, whereby algorithms can be selected at runtime.In some… …   Wikipedia

  • Strategy pattern — Die Strategie (engl. Strategy) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Verhaltensmuster (Behavioural Patterns). Das Muster definiert eine Familie austauschbarer Algorithmen. Es ist eines der… …   Deutsch Wikipedia

  • Strategy — A Strategy is a long term plan of action designed to achieve a particular goal, most often winning. Strategy is differentiated from tactics or immediate actions with resources at hand by its nature of being extensively premeditated, and often… …   Wikipedia

  • Strategy (disambiguation) — A strategy is a long term plan of action designed to achieve a particular goal.Strategy may also refer to:In business: * Business strategy, the art and science of enabling an organization to achieve its objective ** Marketing strategy, a process… …   Wikipedia

  • Strategy video game — Part of a series on …   Wikipedia

  • Pattern recognition — is a sub topic of machine learning. It is the act of taking in raw data and taking an action based on the category of the data .citation needed|date=September 2008 Most research in pattern recognition is about methods for supervised learning and… …   Wikipedia

  • Strategy Safari — (FT Prentice Hall, 2002), subtitled A Guided Tour Through the Wilds of Strategic Management by Henry Mintzberg, Bruce Ahlstrand and Joseph Lampel is an overview of the full field of academic and business studies of strategy, based on a previous… …   Wikipedia

  • Strategy dynamics — The word ‘dynamics’ appears frequently in discussions and writing about strategy, and is used in two distinct, though equally important senses.The dynamics of strategy and performance concerns the ‘content’ of strategy – initiatives, choices,… …   Wikipedia

  • Pattern Recognition (novel) — infobox Book | name = Pattern Recognition image caption = Original 1st edition cover author = William Gibson cover artist = country = United States language = English series = genre = Science fiction novel publisher = G. P. Putnam s Sons release… …   Wikipedia

  • strategy — /strat i jee/, n., pl. strategies. 1. Also, strategics. the science or art of combining and employing the means of war in planning and directing large military movements and operations. 2. the use or an instance of using this science or art. 3.… …   Universalium

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”