I. Wzorce kreacyjne 1. Singleton 2. Budowniczy 3. Prototyp 4. Fabryka 5. Fabryka abstrakcyjna II. Wzorce strukturalne 1. Adapter 2. Most 3. Kompozyt 4. Dekorator 5. Fasada 6. Pyłek 7. Pełnomocnik III. Wzorce czynnościowe 1. Łańcuch zobowiązań 2. Polecenie 3. Interpreter 4. Iterator 5. Mediator 6. Pamiątka 7. Obserwator 8. Stan 9. Strategia 10. Metoda szablonowa 11. Odwiedzający |
Strategia (strategy) - wzorzec projektowy (design pattern) - java1. Cel:Wzorzec Strategia (strategy) używamy gdy chcemy użyć strategii lub wybrać algorytm w czasie wykonania (runtime) i chcesz lub widzisz potrzebę wyeliminowania instrukcji warunkowych w swojej aplikacji. Wzorzec strategii zawiera opcje algorytmu i poszczególne klasy, które eliminują instrukcje warunkowe w aplikacji. Wzorzec strategii jest przydatny, gdy istnieje zestaw powiązanych algorytmów, a obiekt klienta musi mieć możliwość dynamicznego wybierania algorytmu z tego zestawu, który odpowiada jego bieżącym potrzebom. 2. Problem: Chcemy mieć różne algorytmu w aplikacji, chcemy wyeliminować if else do uzyskiwania stragegii, algorytmu aplikacji. Block if else wraz z rozrastaniem aplikacji jest trudny w utrzymaniu, chcemy uprościć złożoność klasy. 3. Rozwiązanie: Wzorzec stan jest implementowany jako interface lub klasa abstrakcyjna. Reprezentowana jest przez klasę per każdy algorytm, strategia. Zamiast przechodzić przez różne przypadki emiminujemy if else block, raz zaimplementując wzorzec który jest uzewnętrzniony do każdego warunku będący klasą algorytmu, strategii. Klient ma informacje o danej strategii ale strategie nie mają nawzajem o sobie informacji. 4. Diagram klas wzorca Strategia (strategy): 5. Implementacja: Klasa testująca: Klasa Context, obsługująca wzorzec strategii: implementacja interface-u i stragegii (algorytmu): Wynik programu to: Sortowanie bąbelkowe Sortowanie quicksort 6. Zastosowanie w kodzie java: - java.util.Comparator#compare() - javax.servlet.http.HttpServlet - javax.servlet.Filter#doFilter() |
---|