Контакт с вложенными агрегатами в DDD

Я просто начинаю в DDD, и я испытываю некоторые затруднения при выяснении, как разместить реляционную природу моих данных. Я имею то, чему я верю, считался бы моим совокупным корнем, но агрегат также имеет собственный агрегат. Не желая нарушить Закон Demeter, я задаюсь вопросом, думаю ли я об этой несправедливости и надеюсь, что некоторый эксперт DDD может предложить некоторое понимание.

Мой совокупный корень - мой Account объект, который имеет агрегат многочисленных AccountElement объекты, которые являются самостоятельно логическими группировками человека ProductComponent объекты.

AccountElement за пределами контекста Account не имеет никакого значения, таким образом, я доволен своим заключением что Account объект является моим совокупным корнем, и я ожидаю что объект, имеющий агрегат Elements свойство. Это ProductComponent набор, который имеет меня перепутанный. Этот агрегат не имеет никакого значения за пределами AccountElement, и действительно не имеет никакого значения за пределами Account.

Я не думаю, что должен получать доступ к человеку ProductComponent объекты путем отмечания точкой моего пути к нему, как:

var reference = account.Elements(0).ProductComponents(0).ReferenceCode;

Но в то же время это не имеет смысла (с доменной точки зрения) к доступу a ProductComponent непосредственно от Account объект.

Я уверен, что это - все немного трудное постигать без ведома моего домена, но я надеюсь, что достаточно получить некоторую хорошую обратную связь.

14
задан Kit 21 June 2012 в 19:16
поделиться

1 ответ

Статья, на которую указал Роберт, хорошая. Я бы добавил, что если ProductComponent существует только в контексте AccountElement, а AccountElement существует только в контексте Account, то по расширению ProductComponent находится в контексте Account.

2
ответ дан 1 December 2019 в 16:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: