dla Architektów Oprogramowania
2 godz. 1 min · Full-stack i Programowanie
Rafał PiekaraSoftware KomandosZanurzymy się w definiowanie strategicznych wzorców Domain Driven Design, które stanowią fundament efektywnego zrozumienia problemów biznesowych. Omówimy kluczowe koncepty takie jak Subdomena czy Bounded Context.
Wzorce taktyczne to praktyczne aspekty DDD, które są kluczowe dla każdego architekta oprogramowania. W tej sekcji mocniej spojrzymy na kod. Dowiesz się, jak stosować i testować wzorce takie jak Value Object, Encja czy Agregat.
Bazy danych to serce wielu systemów, a ich prawidłowe użycie w kontekście DDD jest kluczowe. Omówimy najlepsze praktyki związane z integracją domeny i kontekstów z tabelami bazodanowymi. Poznasz techniki, które pozwolą Ci zachować integralność danych i spójność modelu domenowego, niezależnie od wybranej technologii bazodanowej.
Teoria jest ważna, ale praktyka czyni mistrza. Przejdziemy przez konkretne przykłady implementacji DDD w rzeczywistych projektach. Zobaczysz krok po kroku zastosowanie wzorców, zamodelowanie domeny i implementację. Praktyczne przykłady pomogą Ci zrozumieć, jak stosować DDD w codziennej pracy i jak wpływa to na komunikację z interesariuszami biznesowymi.
Każdy architekt oprogramowania spotkał się z systemami, które były nieczytelne i trudne do utrzymania - tak zwanymi "Big Ball of Mud". Nauczysz się, jak za pomocą DDD przeprowadzić refaktoryzację takiego systemu, przekształcając go w dobrze zorganizowane i zarządzalne struktury.
Kurs powstał z myślą o programistach aspirujących do roli architektów, architektach oprogramowania oraz liderach technicznych, którzy chcą pogłębić swoją wiedzę i umiejętności w zakresie stosowania Domain Driven Design. To materiał idealny dla tych, którzy znają już podstawy DDD i chcą podnieść swoje umiejętności na wyższy poziom, aby projektować złożone i skalowalne systemy. Niezależnie od tego, czy pracujesz nad dużymi projektami, chcesz usprawnić komunikację z zespołem i interesariuszami, czy szukasz nowych strategii na rozwiązywanie skomplikowanych problemów biznesowych - ten kurs jest dla Ciebie!
No i kolejny przykład za modelowane domeny to domena dość popularna,
czyli domena hotelowa.
Będziemy mieć tutaj Rezerwacje pokoi przelatują sobie przez value object
gdzie mamy date range, czyli to jest jakaś zakres dat jak i zakres dat.
Dla rezerwacji pokoju mamy start i end i to jest typ date, więc będziemy tu mieć
range, który jest nie notowany.
Więc nowy zakres dat pokoju, czyli po prostu nowa data
bookingu, nowa data wymeldowania zameldowania będzie po prostu
nowym dowalił obiektem.
Ciekawy koncept tutaj można podpatrzeć.
No i Rum Number też będzie dla nas value obiektem.
Dlaczego Number mógłby być przechowywany jako typ prosty, skoro możemy go
bardzo ładnie sobie tutaj zdefiniować?
I ten rum Amber może też zawierać np.
piętro, jeśli na każdym piętrze mamy tą samą numerację.
Repozytoria bardzo podobnie jak w poprzednich przykładach będą tutaj
interfejsy repozytoriów i mamy encje Encja pokoju.
Mamy.
numer, mamy typ mamy cenę tego pokoju przez nas ciekawe i mamy gościa,
który ma ID unikalny identyfikator.
No i przechodzimy do agregatu.
Naszym agregatem będzie rezerwacja, więc rezerwacja ma jakiś status.
Podobnie jak naprawa w warsztacie przyjmuje zakres dat, ma gościa, ma
pokój no i unikalny identyfikator.
Potem nasz agregat w takim stanie wspólnym możemy sobie zapisać do bazy danych.
Będziemy tutaj mieć konstruktor i możemy anulować tą rezerwację lub ją zakończyć.
I mamy serwisy Application Service pobierający pokój gościa,
tworzący nową rezerwację przez serwis domenowych i zapisujący ją
do repozytorium.
No i mamy service domen owy, który odpowiada za utworzenie nowej
rezerwacji w spójnym stanie.
I tutaj możemy mieć też nowe, oczywiście reguły biznesowe zaimplementowane.
Kolejna domena bardzo prosto wyrażona podstawowa operacja, jaka
zachodzi w hotelach, czyli blokowanie rezerwowania nowych pokoi.
Już wiesz jak to zrobić?
Wykonać tutaj za pomocą właśnie Domain Driven Design.
Gdzie ten przepływ kodu?
Przepływ logiki jest bardzo czytelny i przejrzysty.
A w następnej lekcji przyjrzymy się ostatniej już domenie ostatniemu
przykładowi implementacji DDD.