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 становится сервисной свалкой. Соответствует фазе 10 программы.

Объяснение 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 между агрегатами.

Связанное