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!
Kolejny z wzorców tych praktycznych wzorców, wzorców taktycznych.
Domain Driven Design to encja.
Co to takiego jest encja?
Encja jest obiekt, który będzie już miał jakiś stan.
Identyfikacją tego obiektu będzie jego unikalny identyfikator, więc jeśli możemy
wskazać jakąś prostą różnicę między value obiektem a encji, to będzie to
właśnie unikalny identyfikator.
Więc te same encje z tymi samymi wartościami, ale z różnymi
identyfikatorami będą się różniły.
Encja ma jakiś dłuższy cykl życia i może zmieniać stan, więc na encji
mogą zachodzić pewne operacje.
Encja Entity charakteryzuje się pewną trwałością i tak jak już mówiłem równość
opiera się na unikalnym identyfikatorze, a nie na atrybutach.
I jakie są elementy encji?
W pierwszej kolejności mamy zawsze ten unikalny klucz identyfikator i to jest
coś, co jest wymagane przy tworzeniu i definiowaniu encji.
Mamy atrybuty, więc encja ma jakieś pola, charakterystyczne cechy i może mieć
metody, czyli operacje i zachowania, które zmienią jej stan.
Jak to będzie wyglądało w kodzie?
Zobaczmy na przykładzie prostej encji user.
Mamy tutaj zdefiniowaną klasę usera, które ma pole read only ID.
Więc ono jest niemal totalne ID.
Identyfikator się nie mutuje i jest on przyjmowany w konstruktorze, więc w
konstruktorze przyjmujemy też name i email.
No i encja ma tak.
To co zwaliło projektu tutaj zauważymy ma zaimplementowaną metodę equals i ta metoda
equals porównuje tylko ID, porównuje ID, nie porównuje w ogóle atrybutów.
Mamy też zmianę stanu w postaci funkcji
update email, gdzie możemy zmienić email naszego użytkownika i tworząc dwóch
różnych użytkowników z tym samym imieniem z tym samym
mailem, ale z różnymi identyfikatorami.
Otrzymamy tutaj nierówność.
Te dwie encje nie będą równe, bo różnią się identyfikatorem, ale
encja sama w sobie ma jakieś zachowanie, jakiś cykl życia.
Jest możliwa zmiana maila w naszej encji?
Bardzo prosta definicja, ale widać tutaj charakterystyczną różnicę, gdzie
identyfikator jest głównym atrybutem, który wyróżnia encje
spośród innych obiektów.