【发布时间】:2010-10-13 09:09:40
【问题描述】:
寻找有关使用聚合根的一些说明。
如果我有一个模型(试卷)如下;
问题论文 ---> 问题 ---> 答案
并且我已经确定 QUESTION PAPER 是一个聚合根,如果我想为一个问题选择一个答案,我是否必须在聚合根上放置一个公共方法,或者我可以从根暴露问题并放置一个QUESTION 对象上的公共方法来选择答案??
【问题讨论】:
标签: domain-driven-design aggregate
寻找有关使用聚合根的一些说明。
如果我有一个模型(试卷)如下;
问题论文 ---> 问题 ---> 答案
并且我已经确定 QUESTION PAPER 是一个聚合根,如果我想为一个问题选择一个答案,我是否必须在聚合根上放置一个公共方法,或者我可以从根暴露问题并放置一个QUESTION 对象上的公共方法来选择答案??
【问题讨论】:
标签: domain-driven-design aggregate
一般来说,您总是希望与聚合根对话。如果您正在读取值,那么有时将公共访问器添加到聚合根内的聚合会很方便,但它会很快变得丑陋(德米特法则、破坏抽象等),我建议您不要去做吧。
但是,对于任何改变状态的东西,始终通过聚合根至关重要。聚合根代表一个一致性边界(即,它直接或间接负责将事物保持在有效状态),如果您允许状态更改,您就完全绕过了这一点,从而为不断增加的复杂性打开了大门。
因此,这取决于您在问题中“选择”的含义 - 如果您正在查询,那么您可以摆脱它,但这是一个坏主意。如果您正在更改状态,请不要这样做,否则您的聚合根不再是聚合根。
【讨论】: