在DDD中使用聚合

时间:2010-10-13 09:09:40

标签: domain-driven-design aggregate

寻找关于使用聚合根的一些说明。

如果我有一个模型(问题文件)如下;

问题论文--->问题---> ANSWER

并且我已经确定问题论文是一个聚合根,如果我想选择一个问题的答案我是否必须在聚合根上放置一个公共方法,或者我可以从根中公开问题并放一个QUESTION对象上的公共方法选择ANSWER ??

1 个答案:

答案 0 :(得分:2)

通常,您总是希望与您的聚合根进行对话。如果你正在读取值,那么有时候可以方便地将公共访问器添加到聚合根目录内的聚合中,但它会很快变得很丑(Demeter法则,破坏抽象等等),我建议你不要做到这一点。

但是,对于任何改变状态的内容,始终通过聚合根目录至关重要。聚合根表示一致性边界(即,它直接或间接地负责将事物保持在有效状态),如果允许状态更改,则完全绕过这一点,为不断增加的复杂性打开了大门。

所以,这取决于你在问题中'选择'的意思 - 如果你在查询那么你就可以逃脱它,但这是一个坏主意。如果您正在更改状态,则不要执行此操作,或者您的聚合根不再是聚合根。

相关问题