Wzorzec projektowy: strategia

Strategia (strategy) jest wzorcem, który definiuje rodzinę algorytmów, hermetyzuje je jako osobne klasy oraz powoduje, że można je dowolnie wymieniać. Cecha ta pozwala na zmianę implementacji algorytmów w pełni niezależnie od strony klienta, który z nich korzysta.

We wzorcu tym definiuje się interfejs, który będzie wspólny dla wszystkich strategii. W klasach implementujących interfejs znajdują się metody z konkretnymi już algorytmami. Na samej górze znajduje się klasa kontekstowa, która odpowiada za wybranie algorytmu, który będzie wykonywany. Dodawanie nowych strategii sprowadza się do stworzenia nowej klasy implementującej dany interfejs, a modyfikacja algorytmu sprowadza się do zmiany odpowiedniej klasy. Oznacza to, że wzorzec ten spełnia jedną z podstawowych zasad jaką jest „zamknięty na modyfikację, otwarty na rozszerzenie”. Ponadto, jak zaznaczono wcześniej, we wzorcu tym mamy odseparowane wybory algorytmu od jego implementacji, klient nawet nie musi wiedzieć jak zbudowana jest klasa (strategia).

Zalety:

  • pozwala na eliminacje instrukcji warunkowych przez co kod jest bardziej przejrzysty
  • umożliwia wybór implementacji algorytmu
  • otwarty na rozszerzenie – dodanie nowego algorytmu wymaga dodania nowej klasy
  • modyfikacja algorytmu wymaga zmiany jednej klasy

Wady:

  • Duża ilość klas, jedna dla jednej strategii
Wzorzec projektowy: strategia

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Przewiń do góry