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 |
Łańcuch zobowiązań (Chain of Responsibility) - wzorzec projektowy (design pattern) - java1. Cel:Łańcuch zobowiązań (Chain of Responsibility) oddziela żądanie od obiektu obsługi w łańcuchu procedur obsługi, aż do ostatecznego rozpoznania. Chcemy przekazać zapytanie do obiektu odbierającego, nie wiedząc, kto był nadawcą. Jak również, nadawca nie powinien wiedzieć, kto był odbiorcą, aby przetworzyć to żądanie. 2. Problem: Chcemy oddzielić obiekty nadawcy (sender) i odborcy (receiver). Bez informacji kto jest nadawcą a kto odbiorcą. 3. Rozwiązanie: Podczas używania wzorca odbiorca (receiver) powinien zawierać odniesienie (referencje) do następnego odbiorcy. tzw. następcy (successor). Nie znamy całej hierarchii ale wiemy kto jest następny. Wybieramy ten wzorzec aby wybrać luźne połączenie. Tworzymy łańcuch w którym odbiorcy przetwarzają żądanie. Jeśli jeden objekt nie przetworzył żadania, zostaje przekazany następnemu. 4. Diagram klas wzorca Łańcuch zobowiązań (Chain of Responsibility): 5. Implementacja: Klasa testująca łańcuch zobowiązań: Klasa abstrakcyjna która jest handlerem dla konkretnych nominałów: Implementacja konkretnych nominałów: Wynikiem wywołanej klasy testowej jest: Rozłóż na drobne 5310 $ podzielone na: 100 X 53 = 5300 rodzaj: NominalHandler_100 podzielone na: 10 X 1 = 10 rodzaj: NominalHandler_10 Rozłóż na drobne 250 $ podzielone na: 100 X 2 = 200 rodzaj: NominalHandler_100 podzielone na: 50 X 1 = 50 rodzaj: NominalHandler_50 Rozłóż na drobne 430 $ podzielone na: 100 X 4 = 400 rodzaj: NominalHandler_100 podzielone na: 10 X 3 = 30 rodzaj: NominalHandler_10 6. Zastosowanie w kodzie java: - java.util.logging.Logger#log () - javax.servlet.Filter#doFilter () - Spring security filter chain |
---|