Das Strategie-Entwurfsmuster ist ein Verhaltensmuster, das die Auswahl des Verhaltens eines Algorithmus zur Laufzeit ermöglicht. Es beinhaltet die Definition einer Familie von Algorithmen, die Kapselung jedes in seiner eigenen Klasse und die Möglichkeit, sie austauschbar zu machen. Das Muster besteht aus einer Kontextklasse, einer Strategie-Schnittstelle und konkreten Strategien. Die Kontextklasse hält eine Referenz auf ein Strategie-Objekt und interagiert mit ihm über eine gemeinsame Schnittstelle. Die Strategie-Schnittstelle definiert eine gemeinsame Schnittstelle für alle konkreten Strategien, die die Strategie-Schnittstelle mit spezifischen Algorithmen implementieren. Das Muster ist vorteilhaft, wenn mehrere Algorithmen oder Verhaltensweisen innerhalb einer einzigen Klasse definiert werden müssen oder wenn das Verhalten einer Klasse dynamisch basierend auf Benutzereingaben oder anderen Laufzeitbedingungen geändert werden muss. Es fördert Flexibilität, Erweiterbarkeit, Lesbarkeit und Wartbarkeit und entspricht dem Offen/Geschlossen-Prinzip. Es kann jedoch zusätzliche Komplexität und Overhead verursachen, wenn es nicht sorgfältig verwendet wird. Beispiele für seine Verwendung sind Sortieralgorithmen, Rabattberechnungen und Authentifizierungsmechanismen.
dev.to
Strategy Design Pattern
