代码之家  ›  专栏  ›  技术社区  ›  David

使用DDD中的集料

  •  1
  • David  · 技术社区  · 15 年前

    寻找一些关于使用聚合根的澄清。

    如果我有一个模型(试卷),如下所示:

    问题纸---问题---答案

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

    1 回复  |  直到 15 年前
        1
  •  2
  •   FinnNk    15 年前

    一般来说,您总是希望与您的聚合根进行对话。如果您正在读取值,那么有时可以方便地向聚合根中的聚合添加公共访问器,但它会很快变得丑陋(德米特定律、中断抽象等),我建议您不要这样做。

    然而,对于任何改变状态的东西,总是通过聚合根目录是非常重要的。聚合根表示一致性边界(即,它直接或间接地负责将事物保持在有效状态),如果允许状态更改,则可以完全绕过此边界,从而为不断增加的复杂性打开大门。

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