Решив сделать его корнем совокупности или оставить его в качестве члена совокупного корня.
Я помню в книге Эрика Эванса о DDD, если сущность может быть понята только в терминах другой сущности (корень совокупности), то сделайте ее "простой" сущностью (членом AR).
Мой вопрос: что именно означает "можно понять самому"? Какие вопросы я должен задать себе, чтобы узнать, может ли сущность быть понята сама по себе или нет?
2 ответа
Мой вопрос: что именно означает "можно понять самому"?
Если он может быть создан сам по себе или он должен быть создан в контексте другого.
Какие вопросы я должен задать себе, чтобы узнать, может ли сущность быть понята сама по себе или нет?
"Придерживаются ли все бизнес-инварианты, если я напрямую изменяю эту сущность или, на самом деле, мне нужно выполнить проверку (т.е. if
заявление) о вычислении на совокупности других связанных объектов, чтобы убедиться, что конкретное бизнес-правило проверено?"
Другой вопрос: "Есть ли у меня вся информация в этой организации для проверки всех бизнес-правил?"
Если у вас есть класс, у которого нет причин существовать, кроме как быть частью другого, тогда это не AR. Архетипическим примером является Order
а также Orderitem
, Вы никогда не хотите отслеживать жизненный цикл и OrderItem
, На самом деле, вы, вероятно, хотели бы смоделировать OrderItem
как объект стоимости. Не все из этих концепций в вашей области обязательно будут настолько очевидными.
Что касается поста Уди, на который вы ссылались: возможность создания AR из другого будет зависеть от того, является ли этот AR частью вашего ограниченного контекста. Кроме того, в настоящее время я предпочитаю возвращать события из моего домена, а не поднимать их изнутри домена.