Skip to content

Створення сутностей, об'єктів значень та агрегацій

Мета: Ознайомитися з основними принципами Domain-Driven Design (DDD), навчитися створювати сутності, об'єкти значень та агрегати, а також реалізовувати їх у вигляді коду з використанням найкращих практик.

Завдання

  1. Реалізувати проєкт, який описаний у теоретичній частині, використовуючи найкращі практики, а також одну із запропонованих мов програмування.
  2. Сформуйте звіт з посиланням на віддалений git repository та описом (коротким) того, що ви зробили (додаток 1).

Хід роботи

У якості цільової мови програмування обрано Java для реалізації описаного проєкту в теоретичній частині (з найкращими практиками).

Нижче наведено структуру каталогів для кожного типового піддомену, розглянемо домен catalog — цей піддомен спеціалізується на логіці каталогу продуктів і всьому, що пов'язано з продуктами:

Project structure

  • App — Сервіси, що виконують бізнес-логіку через root агрегати;
  • entity — Сутності, що є root агрегатом;
  • vo — Назва каталогу походить від Value-Objects, зберігаються immutable об'єкти.

Структура інших піддоменів може розширюватися типово за такою ж структурою.

Що було зроблено?

  • Збереження незмінності (Immutable) об'єктів-значень з використанням final полів (lombok.@Value);
  • Явна валідація (хоч і спрощена) у VO;
  • Збережено принцип закритої інкапсуляції шляхом внесення змін через root агрегат;
  • Unit-test підтверджують коректність описаної бізнес-логіки.

Висновок

Під час виконання практичної роботи було досліджено тему DDD та ознайомлено з основними принципами та поняттями. Набуті навички побудови систем за принципами DDD дозволяють краще зрозуміти тему «Чиста архітектура».