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!
Przechodzimy do praktyki i do praktycznego zastosowania Domain Driven Design,
czyli do wzorców taktycznych.
Pierwszym wzorcem, który sobie omówimy będzie Value Object,
czyli obiekt wartości.
Value Objects to są pewne niezmienne obiekty reprezentujące
wartości i ich atrybuty.
W momencie zmiany danej wartości uzyskamy nowy obiekt, a nie zostanie
zmodyfikowana jego wartość.
Więc tworzymy cały czas nowy obiekt.
Znowu wartością i Value Objects, o ile nie mają same własnych zachowań, o tyle będą
miały możliwość porównywania się między sobą.
I co ciekawe wyznacznikiem równości dla wali obiektu jest jego
wartość, a nie identyfikator.
2 walił obiekty z tą samą wartością, ale z różnym ID.
Będą tożsame, będą równe.
Atrybuty value obiektów solid only.
Tak jak już mówiłem, nie modyfikujemy value obiektu.
Tworzymy zawsze nowy obiekt, nową instancję klasy i co trzeba pamiętać wali
obiekty z reguły implementują metodę porównania.
Przechodzimy do kodu.
Pokażę Ci jak wygląda taka przykładowa implementacja value obiektu
w kodzie TypeScript.
Klasyczny przykład, bardzo podręcznikowy.
To jest oczywiście adres.
Ten mój adres jest mocno uproszczony.
Mamy tylko ulicę i miasto, ale widzisz, że ma on tutaj pola read only.
Niemożliwa jest modyfikacja i ma też zaimplementowaną metodę equals, która
pozwoli nam porównywać dwa różne value obiekty.
Jak zapewne zobaczysz w trzeciej linii, tutaj widzimy porównanie ulicy i miasta,
więc value obiekty będą równe tylko wtedy, kiedy wszystkie wartości będą takie same.
Przejdźmy teraz do maila.
Tutaj zobaczysz małe zachowanie jakim jest walidacja value.
Obiekty mogą walić, dawać swój stan valid, ować swoje wartości,
sprawdzać ich poprawność.
I tutaj, jeśli przekażemy nieodpowiednią wartość i maila bez małpy
zostanie nam rzucony wyjątek.
No i oczywiście też mamy zaimplementowaną metodę porównania.
Kolejnym przykładem wagi obiektu jest obiekt many, gdzie będziemy mieć jakąś
kwotę i walutę, w której tę kwotę przechowujemy.
No i dwie wartości pieniędzy są równe tylko wtedy, kiedy i kwota
i waluta są takie same.
W następnej lekcji pokażę Ci jak testować value obiekty.