Wzorzec Strategia definiuje grupę algorytmów, które mogą być stosowane wymiennie w trakcie działania programu. Interfejs wzorca określa zadania (operacje), które implementują konkretne strategie (KonkretnaStrategiaA, KonkretnaStrategiaB, …). Klasa Kontekst ustawia referencję do interfejsu Strategia oraz implementuje metodę kontekstu, która umożliwia dynamiczną zmianę używanej strategii.

PRZYKŁAD

W przykładzie wykorzystam strategie do zmiany formatowania wyświetlanego tekstu (duże litery, małe litery, pierwsza litera duża, pierwsza litera mała).

Na początku dodamy interfejs Strategy i zdefiniujemy w nim funkcję format($text). Jak łatwo się domyśleć, funkcja będzie przyjmować tekst do sformatowania.

Dodajmy teraz konkretne strategie, które zaimplementują interfejs strategii i metodę format:

Klasa Context jest tutaj najistotniejsza. Metoda format wykonuje formatowanie konkretnej strategii zapodanej w konstruktorze:

Tworzymy klasę klienta i testujemy działanie programu:


Przykład na GitHub →