处理DDD中的嵌套聚合

时间:2010-02-05 20:39:38

标签: domain-driven-design aggregateroot

我刚刚开始使用DDD,而我在弄清楚如何适应数据的关系性质方面遇到了一些麻烦。我有我认为会被视为我的聚合根,但聚合也有自己的聚合。我不想违反德米特法则,我想知道我是否正在考虑这个错误,并希望一些DDD专家可以提供一些见解。

我的聚合根是我的Account对象,它有多个AccountElement实体的聚合,这些实体本身就是各个ProductComponent实体的逻辑分组。

AccountElement的上下文之外的Account没有意义,所以我对我的结论感到满意,Account对象是我的聚合根,我期待那个实体具有聚合Elements属性。这是我感到困惑的ProductComponent集合。此聚合在AccountElement之外没有任何意义,而真的Account之外没有任何意义。

我认为我不应该通过点击它来访问单个ProductComponent对象,例如:

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

但与此同时,从域名角度来看,直接从ProductComponent实体访问Account是没有意义的。

我确信在不了解我的域名的情况下理解这一点有点难以理解,但我希望这足以获得一些好的反馈。

1 个答案:

答案 0 :(得分:2)

罗伯特与之相关的文章很好。我想补充一点,如果ProductComponent仅存在于AccountElement的上下文中,并且AccountElement仅存在于Account的上下文中,则扩展ProductComponent位于Account的上下文中。