【问题标题】:Working with Aggregates in DDD在 DDD 中使用聚合
【发布时间】:2010-10-13 09:09:40
【问题描述】:

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

如果我有一个模型(试卷)如下;

问题论文 ---> 问题 ---> 答案

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

【问题讨论】:

    标签: domain-driven-design aggregate


    【解决方案1】:

    一般来说,您总是希望与聚合根对话。如果您正在读取值,那么有时将公共访问器添加到聚合根内的聚合会很方便,但它会很快变得丑陋(德米特法则、破坏抽象等),我建议您不要去做吧。

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

    因此,这取决于您在问题中“选择”的含义 - 如果您正在查询,那么您可以摆脱它,但这是一个坏主意。如果您正在更改状态,请不要这样做,否则您的聚合根不再是聚合根。

    【讨论】:

    • 感谢您的回复。这就是我的直觉,“选择”是指我最终改变了 ANSWER 对象的状态。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2017-05-25
    • 2016-03-21
    • 1970-01-01
    • 2019-06-29
    相关资源
    最近更新 更多