DDD простым языком

Понятия

  • Доменный эксперт - человек отлично знающий все бизнес процессы.
  • Ubiquitos language - единый язык для общения разработчика с доменным экспертом (UML и понятно написанный код).
  • Bounded context - ограниченный контекст (некий один достаточно большой бизнесс процесс, роль или обязанность).
Структура и иерархия Описание
Компания Пример: например Амазон
- domain Пример: интернет магазин Амазон
- domain Пример: облачные вычисления Амазон
- - subdomain Достаточно масштабная бизнес-обязанность (bounded context), например: бухгалтерия, доставка и т.п. Например для бухгалтерии мы используем "1С Бухгалтерия" в рамках которого есть единый Ubiquitous language.
- - - core Основные вещи (то, без чего subdomain не имеет смысла), то, без чего субдомен не состоится
- - - supporting Второстепенные внутренние вещи, например: формирование заказа, маркетинг
- - - generic Второстепенные внешние вещи - то, что может быть отдано на аутсорс, например оплата через Paypal
- - - - агрегат Некая бизнес-сущность, которая состоит из других бизнес-сущностей
- - - - - доменный объект Обычно бывает двух видов: entity (имеет уникальный ID) или VO (имеет уникальный guid)

Теперь немного про отличие анемичной доменной модели от модели агрегата:

ORM Doctrine

Мартин Фаулер говорит так: логика домена (domain logic) имеет дело только с предметной областью как таковой (примером могут служить стратегии вычисления зачтенного дохода по контракту), а логика приложения (application logic) описывает сферу ответственности приложения (скажем, уведомляет пользователей и сторонние приложения о протекании процесса вычисления доходов).

Как видите, DDD это не так то просто, а альтернативой является — table driven design (Active record, которая отражает суть предметной области).

Тактические паттерны

При реализации любой из видов моделей часто используют паттерны:

  • separated interface - интерфейс модели, который должен быть в доменном слое, а реализация в инфраструктурном слое (чтобы избавить доменную логику от сторонних зависимостей).
  • отложенные евенты - события которые срабатывают, когда транзакция закомичена, но не раньше.
Оцени публикацию:
  • 0,0
Оценили: 0


Предложения и пожелания:

 

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2019 YaPro.Ru

Лебеденко Николай Николаевич
Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter