Wzorzec
Builder to prawdopodobnie najczęściej stosowany wzorzec projektowy w Javie.
Umożliwia on wieloetapowe budowanie obiektu, które wykonywane jest przez specjalnie przygotowany
do tego zadania obiekt budujący (budowniczy, z ang. builder).
Budowanie
Przejdźmy od razu do omówienia konkretnego przykładu.
Zbudujemy obiekt klasy
DocumentItem. Naszym builderem będzie klasa
DocumentItemBuilder.
Klasa ta ma za zadanie tylko i wyłącznie zajmować się budową dokumentu, więc możemy ją umieścić w ciele klasy
DocumentItem. Klasa jest statyczna, ponieważ chcemy mieć do niej dostęp w kontekście statycznym
(buildera będziemy inicjalizować za pomocą metody statycznej
builder).
Warto podkreślić, że podczas budowania obiektu decydujemy jakie pola mają zostać zainicjowane. Trzy przykłady tworzenia obieku, każdy z innym "wypełnieniem":
Uruchomienie każdej kolejnej metody stanowi etap budowania (stąd pojęcie "wieloetapowość"). W uzasadnionych przypadkach możemy rozbić budowę obiektu na części:
Kod klasy buildera do skopiowania:
Uruchomienie
Zanim wykorzystamy naszego buildera, rzućmy jeszcze okiem na klasę kategorii dokumentu.
Do zbudowania tej klasy moglibyśmy również użyć buildera, ale klasa ta jest na tyle prosta,
że użyjemy jedynie z metody budującej
of (przy okazji to też
przykład fajnego sposobu na tworzenie obiektu klasy w dedykowanej metodzie):
Uruchamiamy nasz kod budujący klasę
DocumentItem i drukujemy jego zawartość na konsolę (
System.out.println wywołuje tutaj niejawnie
metodę
toString na obiekcie
documentItem):
Wynik wykonania kodu:
Appa Notka. A teraz ciekawostka.
Niemal identycznie wygląda klasa budująca, którą stworzy nam Lombok, gdy użyjemy adnotacji @Builder,
a następnie wykonamy Delombok w IntelliJ:
Jeśli interesują Cię wzorce projektowe, możesz być również zainteresowany naszym Kursem Aplikacji Web,
w którym uczysz się kompleksowo Springa, Hibernate'a i innych aktualnych rozwiązań technologicznych
na bazie
gotowej aplikacji webowej.
Oto co dokładnie znajdziesz w kursie:
-
Kurs implementacji aplikacji webowej zbudowanej za pomocą:
- Spring Boot 2, Spring Framework 5, Spring Data JPA, Spring MVC
- Spring Security, Spring AOP
- Hibernate
- REST Api, Format JSON
- Maven
Aplikacja obejmuje funkcjonalności od rejestracji użytkownika i logowania, przez tworzenie, edycję oraz usuwanie danych,
aż po różne formy prezentacji, w tym tabele i wykresy. Kurs obejmuje również implementację resetowania hasła
z linkiem potwierdzającym wysyłanym na adres email.
-
Atak CSRF i jak się przed nim bronić w Springu
-
Clickjacking za pomocą iframe - jak się zabezpieczyć za pomocą Spring Security
-
CORS i jego możliwe opcje w Springu
-
Testowanie CORS-a z użyciem cURL
-
Dodatkowy projekt do nauki samego Hibernate'a, przygotowany w dwóch wersjach (z Lombokiem i bez).
Ta część bazy wiedzy zawiera ponad 60 omówionych snippetów kodu, wzbogaconych dodatkowo ponad 40 zdjęciami.
W projekcie zostały zaimplementowane i omówione między innymi:
- Podstawy Hibernate'a (adnotacje, encje itp.)
- Wszystkie rodzaje relacji bazodanowych
- Orphan Removal
- Single Table Discriminator
- Table Per Class
...oraz wiele innych zagadnień.
Sam kurs implementacji aplikacji to ponad 150 stron (całość online) analizy kodu od frontendu przez REST-owe wysyłanie żądań i odbieranie odpowiedzi, po zapis w bazie i wizualizowanie zapisu we frontendzie.
Dokładnie rozpisane ścieżki w kodzie z tabelami kolejnych kroków dla poszczególnych funkcjonalności. Drogowskazy do ogromnej bazy wiedzy
dołączonej w postaci kursów Spring i Hibernate (z projektami wspierającymi naukę).
Zobacz aplikację
Autor: Jarek Klimas
Data: 03 stycznia 2024
Labele: Backend, Podstawowy, Java
Czy informacje, które otrzymałeś, były pomocne?
Jeśli tak, zapraszam Cię do podarowania mi kawy.