Zrozumienie biznesu to klucz do sukcesu programisty
1 godz. 30 min · Full-stack i Programowanie
Rafał PiekaraSoftware KomandosZgłębimy podstawy Domain Driven Design, skupiając się na zrozumieniu, czym jest domena i jakie role pełnią subdomeny w rozumieniu biznesu i projektowaniu oprogramowania. Dowiesz się, jak identyfikować i definiować domenę oraz subdomeny w kontekście biznesowym, co jest kluczowe dla efektywnego modelowania i implementacji systemów.
Skoncentrujemy się na jednym z kluczowych aspektów Domain Driven Design - definiowaniu granic kontekstów (Bounded Contexts). Nauczysz się, jak precyzyjnie wyznaczać te granice, co pozwala na lepszą separację i integrację różnych części systemu. Omówimy, jak wyznaczone granicę wpływają na jasność komunikacji w zespole oraz jak ułatwiają zrozumienie modelu biznesowego.
Spojrzymy na strategiczne wzorce DDD, skupiając się na kluczowych konceptach takich jak Subdomena i Bounded Context. Zrozumienie i umiejętność ich identyfikacji w strukturach biznesowych to podstawowa umiejętność w projektowaniu domenowym. Nie pominiemy też tematów pobocznych jak kontekst schizofreniczny czy Prawo Conwaya. Każdy z tych elementów pomoże Ci lepiej zrozumieć zastosowanie Domain Driven Design w praktyce.
Wzorce taktyczne są fundamentalne dla praktycznego modelowania i implementacji oprogramowania. O ile wzorce strategiczne wyrażają koncepcję, to wzorce taktyczne dotykają, tego, co kochają programiści i programistki czyli kodu. Zobaczysz jak i po co je stosować i jak mogą wspomagać spójność oraz transakcyjność danych.
Wszystko fajnie z tym DDD, ale jak to poukładać? Na to też znalazło się miejsce w kursie. Cały moduł poświęcimy na zapoznanie się z przykładową strukturą, organizacją plików i folderów aplikacji opartej o Domain Driven Design. Nie musisz się już zastanawiać, gdzie upchnąć Twoje klasy. Wszystko stanie się przejrzyste, intuicyjne i oczywiste.
Kurs powstał z myślą o programistach, architektach, liderach technicznych, a także ludziach biznesu, którzy potrzebują pogłębić swoją wiedzę o projektowaniu oprogramowania skoncentrowanego na domenie biznesowej. Niezależnie od tego, czy jesteś na początku drogi z DD, czy masz już trochę doświadczenia i chcesz usystematyzować lub odświeżyć wiedzę - ten kurs jest dla Ciebie!
W tej lekcji omówimy sobie wzorce taktyczne Domain Driven Design.
Wzorce taktyczne to takie wzorce, które dotyczą już ściśle implementacji kodu.
Pierwszym takim najpopularniejszym wzorcem jest wzorzec Value Object.
Co to takiego jest Value Object?
Wyobraź sobie, że masz kartkę, na której zapisano numer telefonu.
Jest to Twój numer telefonu.
W momencie, gdy zmienisz przynajmniej jedną cyfrę na tej kartce, w tym numerze
telefonu, to nie będzie tak, że Ty edytujesz swój numer
telefonu, że tego zmienisz.
To wtedy będzie tak naprawdę nowy numer telefonu,
będzie miał nową wartość i ten telefon będzie już należał do innej osoby.
Zadzwonimy pod ten numer i nie zadzwonimy już do ciebie, tylko do kogoś
innego, kto ten numer posiada.
I czymś takim jest Value Object Value Object.
To jest taki obiekt, w którym nie interesuje nas identyfikator
ani jakakolwiek jego struktura.
Interesuje nas jego wartość.
Wartość może być pojedynczym polem lub bardziej złożonym zestawem pól, ale chodzi
tu stricte o wartość i value object są równe, jeśli ich wartości są równe,
niezależnie czy reprezentują dwa różne miejsca w pamięci, dwa różne obiekty, dwie
różne klasy, dwa różne identyfikatory.
I przykładami takich value obiektów, które możesz spotkać gdzieś w swoim kodzie lub
w kodzie, z którym pracujesz może być np. mount.
To jest taki klasyczny przykład value object, gdzie zapisujemy w jakiś sposób
pewną sumę pieniędzy, w której mamy liczbę pieniędzy, wartość numeryczną
i walutę, w której te pieniądze mamy.
Tak samo delivery adres, który będzie złożony value object, gdzie będziemy mieć
kilka atrybutów, które będą tworzyły jedną wartość, czyli np.
miasto, ulicę, numer domu, numer mieszkania, jakiś kod pocztowy, więc kilka
pól, które będą tworzyły jeden obiekt.
Przejdźmy teraz do kodu i pokażę Ci taki podstawowy value objective napisany w
języku Ruby i napisane w tym skrypcie.
Widzisz, tutaj mamy Value Object email i ten value object ma jedno pole value.
Email jest prostym obiektem, więc ma tylko wartość String wartość tekstową.
W konstruktorze ustawia sobie tę wartość i od razu ją walidację.
Tak samo zrobiłem jak i tutaj w skrypcie i walidację ją względem reg ex.
W momencie gdy ten obiekt jest niepoprawny zostaje rzucony wyjątek i value.
Obiekty często rzucają właśnie wyjątki w momencie, gdy ich stan ich wartości są
niepoprawne, gdy walidacja nie przechodzi.
Mamy też dodatkowo zaimplementowane metody porównawcze tutaj i tutaj.
W skrypcie, gdzie porównujemy wartości tych obiektów nie porównujemy ID, nie
porównujemy żadnych innych atrybutów i parametrów tylko wartości, więc
to zapamiętaj z tej lekcji.
Value Object to jest taki obiekt, który różni się od siebie wartością.
Interesuje nas w nim tylko i wyłącznie wartość wartość value obiektu.