Wzorzec strategii
Z Wikipedii
Wzorzec strategii to w inżynierii oprogramowania jeden z wzorców projektowych należący do grupy wzorców operacyjnych. Jego istotą jest zapewnienie sposobu na elastyczne wybieranie algorytmu wykonania danej czynności w trakcie działania programu.
[edytuj] Problem
Przy projektowaniu architektury systemów informatycznych często natrafia się na miejsca, w których następuje potrzeba wybrania jednego z kilku sposobów wykonania jakiegoś cząstkowego zadania. Przykładowo:
- aplikacja sklepu internetowego musi we właściwy sposób naliczyć podatek w zależności od kraju klienta
- formularz zakładania konta musi w odpowiedni sposób (w zależności od typu oczekiwanych danych) zwalidować każde z pól
- w zależności od polecenia użytkownika dane muszą być zaprezentowane jako strona WWW, dokument PDF lub obrazek PNG
[edytuj] Rozwiązanie
Najbardziej oczywistym sposobem rozwiązania tego problemu wydaje się zastosowanie którejś z instrukcji warunkowych wybierającej żądany algorytm. Jednak takie rozwiązanie jest mało elastyczne - zarówno warunki wyboru jak i lista algorytmów są trwale wpisane w program.
W językach obiektowych lepszym wyjściem jest hermetyzacja zmienności algorytmów przez zdefiniowanie bazowej klasy abstrakcyjnej, z której dziedziczą konkretne klasy implementujące poszczególne algorytmy. Obiekt wykorzystujący algorytm zawiera wtedy pole przechowujące instancję klasy konkretnej (lub wręcz ciąg znaków identyfikujący nazwę klasy konkretnej jeśli są one przechowywanymi w puli singletonami) i może dzięki polimorfizmowi wykonać go nie wiedząc zupełnie który konkretnie algorytm jest stosowany.
W razie, gdyby istniała potrzeba dodania nowego algorytmu, zastosowanie tego wzorca zapewnia możliwość łatwej rozbudowy programu bez konieczności zmieniania jego architektury. Należy po prostu dodać kod nowej klasy i przekazać jej instancję do obiektu wykorzystującego algorytm.

