Wpisany przez Kamil Dworak,
04 sierpnia 2010 14:36
Strategia (ang. Strategy) jest czynnościowym wzorcem projektowym, będącym tak naprawdę pewną rodziną algorytmów. Algorytmy te upakowane są w oddzielne, w pełni wymienne (w trakcie działania programu) klasy. Na samej górze znajduje się klasa kontekstowa, wybierająca, który algorytm (ale tylko jeden!) będzie wykonywany. Dodawanie nowych algorytmów sprowadza się do stworzenia nowej klasy implementującej dany interfejs. Modyfikacja algorytmu to tylko modyfikacja odpowiedniej klasy. Mamy tutaj odseparowanie wyboru algorytmu od jego implementacji (sam klient nawet nie wie jak zbudowana jest dana strategia). Często występuje z wzorcem fabryki.
Uogólniony diagram wzorca:
Uogólniony diagram wzorca:
Diagram odpowiadający załączonemu przykładowi:
- Użytkownik podaje nazwę zawodu.
- Nazwa ta przekazywana jest do klasy kontekstowej za sprawą konstruktora.
- W kontekście mamy trzy prywatne zmienne, odpowiednio od dostępnych interfejsów. Na podstawie przekazanego łańcucha wybieramy jedną, najbardziej odpowiadającą ścieżkę.
- Dla każdej zmiennej wywoływany jest konstruktor, który definiuje każdą z nich, jako odpowiedni algorytm. Dzięki temu zmienne otrzymują dostęp do wszystkich metod klas.
- Kolejno odpalamy metody. Rezultaty widoczne na ekranie.
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Kamil Dworak | C# | Visual Studio 2008 | .cs | .cs | ***** / 5 |
Kamil Dworak | C/C++ | Visual Studio 2008 | .cpp | .cpp | ***** / 3 |
Kamil Dworak | Java | .java | .java | ***** / 18 | |
Marek | Php | PHPStorm 9 | .php | .php | ***** / 2 |
Marcin Prokop | Ruby | .rb | .rb | ***** / 1 |
Poprawiony: 04 sierpnia 2010 14:47