Чем на уровне бизнес-логики Domain Model в DDD отличается от Anemic Domain Model и почему последняя считается антипаттерном?

Domain Model объединяет состояние и правила в объектах, которые защищают инварианты. Anemic Domain Model оставляет в объектах почти только данные, а всю логику переносит в процедурные сервисы.

Короткий ответ

Что ответить на собеседовании

Domain Model объединяет состояние и правила в объектах, которые защищают инварианты. Anemic Domain Model оставляет в объектах почти только данные, а всю логику переносит в процедурные сервисы.

Подробный разбор

Ответ с пояснениями

Domain Model объединяет состояние и правила в объектах, которые защищают инварианты. Anemic Domain Model оставляет в объектах почти только данные, а всю логику переносит в процедурные сервисы.

Например, order.cancel() может проверять допустимый переход статуса; при анемичной модели внешний код напрямую меняет поля и должен везде повторять ограничения.

Для сложного домена это ведёт к дублированию правил и трудно контролируемому состоянию. Но DTO и простые CRUD-модели не обязаны быть «богатыми»: проблема возникает при несоответствии сложности задачи выбранному дизайну. Оркестрация внешних вызовов и транзакций всё равно может оставаться в application service, не внутри доменной сущности.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее