Domain Driven Design

Domain-Driven Design в Java/Spring: что такое DDD, стратегические паттерны (Bounded Context, Context Map, Ubiquitous Language), тактические (Entity, Value Object, Aggregate, Domain Event, Repository), интеграционные (ACL, OHS), принципы проектирования. Объяснение прозой с примерами кода. Правила-якоря с кодами R-ENT/R-VO/R-AGG — в DDD Tactical Style Guide.

Зачем для UCP. Уровень зрелости 3 (DDD + Hexagonal) в UCP опирается на DDD: агрегаты, доменные события, bounded context. Без этого Handler становится сервисной свалкой. Входит в программу подготовки.

Объяснение Domain-Driven Design прозой и примерами Java/Spring: что такое DDD, как разрезать систему на bounded context-ы, как описывать домен через агрегаты и события, как соединять контексты через интеграционные паттерны.

Это теоретический раздел: статьи читаются по порядку, чтобы построить картину. Правила с кодами R-ENT-N / R-AGG-N, которые цитирует AI-скилл ucp-ddd-tactical-review при ревью PR, — в отдельном DDD Tactical Style Guide.

Содержимое раздела

  1. Что такое DDD и зачем он нужен — какую проблему решает, когда оправдан, когда избыточен. Доменная модель, контексты, единый язык.
  2. Стратегические паттерны — Bounded Context, Context Map, Ubiquitous Language, поддомены. Как разрезать систему по смыслу, а не по таблицам.
  3. Тактические паттерны — Entity, Value Object, Aggregate, Repository, Domain Event с примерами Java/Spring.
  4. Интеграционные паттерны — ACL, Open Host Service, Published Language, Customer-Supplier, Conformist. Как соединять контексты без утечки чужой модели.
  5. Принципы проектирования — инварианты, границы транзакций, eventual consistency между агрегатами.
  6. Онтология и доменная модель — система понятий до агрегатов: откуда берётся модель и почему агрегат — не таблица.
  7. Event Storming — как добыть модель у бизнеса за один воркшоп: события, горячие точки, границы контекстов.

Связанное