Adrian Skalczuk Szymon Kosarzycki
Spis Treści
Wstęp [1/2] Wzorce projektowe są nieodłącznym przyjacielem programisty pozwalają pisać czystszy kod, łatwiejszy do zrozumienia przez innych i zapewniają pewien abstrakcyjny zbiór rozwiązań abstrakcyjnych problemów.
Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.
Kluczowe informacje o każdym wzorcu [1/2] Nazwa i klasyfikacja wzorca Cel co pozwala osiągnąć Motywacja opisuje cel wzorca (co stara się osiągnąć / jaki problem wyeliminować) oraz powodu, dla których należy go użyć Zastosowanie opisuje sytuacje, problem, który sugeruje użycie wzorca Struktura wizualna reprezentacja (najczęściej w formie diagramu UML lub innego, koncepcyjnego) Uczestnicy lista klas i obiektów, które biorą udział w implementacji tego wzorca
Kluczowe informacje o każdym wzorcu [2/2] Współpraca opis, w jaki sposób powyższe elementy współpracują ze sobą, jakie są między nimi interakcje Konsekwencje wynik uzycia wzorca, koszty jego stosowania i kompromisy Implementacja opis implementacji (np. w pseudokodzie lub normalnym tekstem) Przykład przykład implementacji w wybranym języku Znane zastosowania przykłady użycia (np. w popularnych bibliotekach, narzędziach Powiązane wzorce podobne lub komplementarne wzorce
Podstawowy podział wzorców Kreacyjne opisują, w jaki sposób obiekty są tworzone Behawioralne opisują zachowanie obiektów Strukturalne opisują sposób, w jaki obiekty są zbudowane Architektoniczne (wprowadzone później) opisują bardziej abstrakcyjne wzorce jak np. MVC
Wzorzec: Fasada [1/3] Wzorzec fasady polega na tym, że tworzymy klasę, której jedynym zadaniem jest wywoływanie odpowiednich metod z innych klas (np. serwisów) czasem w odpowiedniej kolejności lub dodając/modyfikując pewne informacje.
Wzorzec: Fasada [2/3] Jako przykład (choć nie do końca prawidłowy, ale za to znany wszystkim czytelniczkom) możemy podać kontrolery w aplikacji webowej najczęściej ich działanie ogranicza się do prostej logiki i wywołania odpowiedniego serwisu (lub kilku serwisów).
Wzorzec: Fasada [3/3] W praktyce fasady często spotykamy w sytuacjach, kiedy mamy wiele różnych systemów (np. w korporacjach), a potrzebujemy spójnego sposobu na dostęp do danych z róznych źródeł (np. dla działu marketingu potrzebujemy danych ze sprzedaży oraz z magazynu). Fasada ułatwia dostęp do różnych obiektów i ukrywa szczegóły implementacji.
Wzorzec: Fabryka [1/2] Wzorzec fabryka (ang. factory method) to metoda, która tworzy nam nowy obiekt. Powodów, dla których chcemy tak zrobić może być wiele najczęściej jako typ zwracany deklarujemy interfejs, a metoda zawiera logikę która decyduje jakiego typu obiekt utworzyć:
Wzorzec: Fabryka [2/2] Są przypadki, że logikę realizowaną przez metodę-fabrykę moglibyśmy zaszyć w konstruktorze, ale nie zawsze jest to wskazane. Takie podejście pozwala na rozszerzenie funkcjonalności w przyszłości za pomocą technik OOP, np. dodanie obsługi nowych klas czy zmiana algorytmu. Przykład użycia fabryki to np. konfiguracja Stringa za pomocą kodu Javy (używając metod z adnotacjami @Bean) OOP - Programowanie obiektowe, programowanie definiujące obiekty.
Podsumowanie To, co trzeba koniecznie zapamiętać wzorce projektowe nie są odpowiedzią na problemy. Są wskazówkami dojścia do rozwiązania, ale nie stanowią odpowiedzi. Można je bardzo łatwo nadużyć. Absolutnie niedopuszczalna jest sytuacja, w której naciągamy problem tak, aby pasował do konkretnego wzorca (nie, nawet troszeczkę też jest niedopuszczalne!)
Źródła http://kobietydokodu.pl/21-wzorce-projektowe/ Serdeczne podziękowania dla Pana Jakuba, moderatora strony za szybką pomoc w wyjaśnieniu problemu ;)