【发布时间】:2015-08-11 03:10:03
【问题描述】:
想要对聚合做某事的“用户/开发人员”是否应该只面对聚合根?那么,我想在聚合内部深处的实体上调用的每个方法都应该通过根“路由”吗?这将使根具有非常广泛的接口和大量无聊的代码。
或者它是否允许遍历和导航聚合,选择您要处理的实体并直接在其上调用方法?
或者我要让根给我实体(不允许从外部遍历和导航聚合)然后直接调用这个实体上的方法?
【问题讨论】:
想要对聚合做某事的“用户/开发人员”是否应该只面对聚合根?那么,我想在聚合内部深处的实体上调用的每个方法都应该通过根“路由”吗?这将使根具有非常广泛的接口和大量无聊的代码。
或者它是否允许遍历和导航聚合,选择您要处理的实体并直接在其上调用方法?
或者我要让根给我实体(不允许从外部遍历和导航聚合)然后直接调用这个实体上的方法?
【问题讨论】:
指定为聚合“根”的实体是看门人,所以所有方法调用都需要先经过他。如果您考虑一下,这是有道理的。如果你分发一个内部实体,你怎么能确定它以预期的方式使用并且不变量得到维护?此外,现在您的内部细节已经耦合,对内部结构的更改将波及整个系统。
请记住,我们努力设计小型聚合体,因此如果表面积变得太大,这可能表明您的聚合体边界是错误的。
【讨论】: