DDD — поделиться или дублировать объект значения, который будет использоваться между двумя совокупными корнями?

Если у меня есть объект стоимости платежа, может ли он использоваться двумя разными корнями агрегатов? или мне его дублировать?

Оба варианта кажутся неправильными!


person Cool Breeze    schedule 27.11.2014    source источник
comment
Ответ в этом посте предполагает, что можно делиться stackoverflow .com/questions/7477679/?   -  person Cool Breeze    schedule 27.11.2014
comment
Почему они чувствуют себя не так? Объект-значение представляет собой значение бизнес-концепции, как определено языком ограниченного контекста.   -  person MikeSW    schedule 27.11.2014
comment
На самом деле это только дублирование кажется неправильным. Совместное использование кажется правильным... но что имеет в виду Эрик, когда говорит: Ничто за пределами границы Агрегата не может содержать ссылку на что-либо внутри, кроме корневой Сущности?   -  person Cool Breeze    schedule 27.11.2014
comment
Это означает, что любой, кто использует агрегат, должен делать это через корень агрегата. Короче говоря, только совокупный корень «пригоден для использования» напрямую.   -  person MikeSW    schedule 27.11.2014
comment
Это то, о чем я думал. Таким образом, объект Value в AR1 не должен быть доступен для AR2. Проблема в том, что объект-значение в AR1 имеет смысл и в AR2... теперь я начинаю думать, что два совокупных корня принадлежат разным BC.   -  person Cool Breeze    schedule 27.11.2014
comment
Нет, объект значения — это просто значение, «ссылка» предназначена для сущностей. Неважно, что реализация объекта-значения является классом, ссылка DDD не имеет ничего общего со ссылкой на объект из ООП. DDD не волнует, какой язык программирования вы используете.   -  person MikeSW    schedule 27.11.2014
comment
правильно... так вы говорите, что один и тот же объект значения может использоваться внутри разных агрегатов?   -  person Cool Breeze    schedule 27.11.2014
comment
@user2909756 user2909756 Да, типы VO могут совместно использоваться любым количеством агрегатов в одном BC.   -  person guillaume31    schedule 27.11.2014
comment
Весь смысл неизменяемости VO заключается в том, что ими можно делиться между различными AR/сущностями/клиентами, не опасаясь побочных эффектов.   -  person Alexander Langer    schedule 27.11.2014


Ответы (1)


Пока ваш VO неизменен, вы можете поделиться им без каких-либо проблем. Однако Эванс запрещает публиковать изменяемые VO, и я думаю, вы тоже с этим согласитесь.

person plalx    schedule 27.11.2014
comment
Это имеет смысл. Спасибо за пояснение :) - person Cool Breeze; 28.11.2014