Что такое DDD
Проектирование на основе предметной области
Что такое DDD
Domain-Driven Design (DDD) — подход к разработке ПО, который фокусируется на моделировании предметной области и тесном взаимодействии разработчиков с экспертами бизнеса.
Стратегический дизайн
| Концепция | Описание | |-----------|----------| | Bounded Context | Границы модели с единым языком | | Ubiquitous Language | Общий язык команды и бизнеса | | Context Map | Карта связей между контекстами | | Subdomain | Поддомен (Core/Supporting/Generic) |
Тактический дизайн
| Паттерн | Назначение | |---------|------------| | Entity | Объект с идентичностью | | Value Object | Неизменяемый объект-значение | | Aggregate | Группа связанных сущностей | | Aggregate Root | Точка входа в агрегат | | Repository | Доступ к агрегатам | | Domain Service | Бизнес-логика вне сущностей | | Domain Event | Событие в домене | | Factory | Создание сложных объектов |
Типы поддоменов
- Core Domain — конкурентное преимущество
- Supporting Subdomain — поддержка core
- Generic Subdomain — стандартные решения
Интеграционные паттерны
| Паттерн | Описание | |---------|----------| | Shared Kernel | Общее ядро между контекстами | | Customer-Supplier | Отношения заказчик-поставщик | | Conformist | Подчинение upstream модели | | Anticorruption Layer | Защита от чужих моделей | | Open Host Service | Публичный API контекста |
Когда применять DDD
- Сложная бизнес-логика
- Долгоживущий проект
- Доступ к экспертам предметной области
- Команда готова к инвестициям в дизайн