Створення сутностей, об'єктів значень та агрегацій
Мета: Ознайомитися з основними принципами Domain-Driven Design (DDD), навчитися створювати сутності, об'єкти значень та агрегати, а також реалізовувати їх у вигляді коду з використанням найкращих практик.
Завдання¶
- Реалізувати проєкт, який описаний у теоретичній частині, використовуючи найкращі практики, а також одну із запропонованих мов програмування.
- Сформуйте звіт з посиланням на віддалений git repository та описом (коротким) того, що ви зробили (додаток 1).
Хід роботи¶
У якості цільової мови програмування обрано Java для реалізації описаного проєкту в теоретичній частині (з найкращими практиками).
Нижче наведено структуру каталогів для кожного типового піддомену, розглянемо домен catalog — цей піддомен спеціалізується на логіці каталогу продуктів і всьому, що пов'язано з продуктами:
App— Сервіси, що виконують бізнес-логіку через root агрегати;entity— Сутності, що є root агрегатом;vo— Назва каталогу походить відValue-Objects, зберігаються immutable об'єкти.
Структура інших піддоменів може розширюватися типово за такою ж структурою.
Що було зроблено?¶
- Збереження незмінності (
Immutable) об'єктів-значень з використаннямfinalполів (lombok.@Value); - Явна валідація (хоч і спрощена) у VO;
- Збережено принцип закритої інкапсуляції шляхом внесення змін через root агрегат;
- Unit-test підтверджують коректність описаної бізнес-логіки.
Висновок¶
Під час виконання практичної роботи було досліджено тему DDD та ознайомлено з основними принципами та поняттями. Набуті навички побудови систем за принципами DDD дозволяють краще зрозуміти тему «Чиста архітектура».
