Wzorce Projektowe w JAVA
Wzorzec projektowy Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego rozwiązania w sposób abstrakcyjny Christopher Alexander Wzorzec projektowy identyfikuje i opisuje pewną abstrakcję, której poziom znajduje się powyżej poziomu abstrakcji pojedynczej klasy, instancji lub komponentu Gang of Four E. Gamma, R. Helm, R. Johnson, J. Vlissides (1994)
Wzorce projektowe kreacyjne (konstrukcyjne) – opisujące proces tworzenia nowych obiektów; ich zadaniem jest tworzenie, inicjalizacja oraz konfiguracja obiektów, klas oraz innych typów danych (Singleton) strukturalne – opisujące struktury powiązanych ze sobą obiektów (Dekorator); czynnościowe (behawioralne) – opisujące zachowanie i odpowiedzialność współpracujących ze sobą obiektów. (Obserwator) złożone – agreguje w sobie inne wzorce (MVC)
Wzorzec singleton Celem wzorca jest ograniczenie możliwości tworzenia obiektów danej klasy do jednej instancji oraz zapewnienie globalnego dostępu do stworzonego obiektu.
Wzorzec dekorator Pozwala na dynamiczne dołączanie do klas nowych funkcjonalności. Składa się z obiektu dekorowanego i dekoratorów. Obiekt dekorowany to instancja klasy, którą zamierzamy wzbogacić o dodatkowe zadania. Dekoratory implementują nowe zachowania, aby na końcu delegować wykonanie konkretnych operacji do obiektu dekorowanego.
MVC – Model-Widok-Kontroler Model – Reprezentacja logiki biznesowej. Miejsce przechowywania danych i manipulowania nimi. Przechowywanie: pliki, baza, webserwisy, itd. Widok – Warstwa prezentacji. Wizualne przedstawienie danych z modelu (Swing, HTML, Tekst) Kontroler – Obsługa żądań użytkownika i kierowanie ich do modelu WIDOK KONTROLER MODEL
Zalety MVC Separacji odpowiedzialności (wiadomo co robi widok, a co model) – wiadomo gdzie szukać błędu Wymiana dowolnego komponentu (widoku lub kontrolera) nie wpływa na działanie aplikacji. Logika biznesowa jest odizolowana od wszelkich technologii Widoku czy protokołów obsługi żądań wysyłanych przez użytkowników Ułatwia utrzymanie dużych aplikacji i dodawanie nowych funkcji Ułatwia podział obowiązków w zespole: Osoba A – pisze same widoku Osoba B – odpowiedzialna za modele Itd. Komponenty aplikacji MVC mogą być wykorzystane w innych projektach
Częste błędy Widok nie może mieć wpływ na model - modyfikowanie Modelu z poziomu Widoku jest błędne Kontroler jest tylko zarządcą, przekazuje żądania od użytkownika do modelu. Wykonywanie logiki biznesowej zmieniającej stan Modelu wewnątrz Kontrolera jest błędne.
Frameworki MVC Dla stron www: Dla aplikacji desktopowych: Spring https://spring.io/ PlayFramework https://www.playframework.com/ Dla aplikacji desktopowych: Swing JavaFX
Wzorzec Obserwator Używany jest do powiadamiania zainteresowanych obiektów o zmianie stanu pewnego innego obiektu. WIDOK KONTROLER MODEL
Wzorzec Obserwator Observable (java.util.Observable) – Klasa po której dziedziczą obiekty obserwowane public void addObserver(Observer obs) public void deleteObserver(Observer obs) public void deleteObservers() public int countObservers() protected void setChanged() protected void clearChanged() public boolean hasChanged() public void notifyObservers() public void notifyObservers(Object obj) Observator (java.util.Observer) – interfejs do implementacji w obiekcie który obserwuje dane