聚合对象和边界

时间:2012-10-26 12:51:42

标签: java java-ee domain-driven-design

我对聚合对象感到困惑,只有聚合对象才有存储库,因为我不知道如何正确编码它。

假设您有UserQuestionQuestionLog实体。我不明白如何设置聚合对象应该放入多少的边界。您可以说没有用户就不会在我的系统中存在任何问题,如果没有任何问题需要附加问题日志就不会存在。那么用户是聚合根吗?

例如,您如何添加问题日志? 对我来说,似乎你最终会有很多嵌套等等User.addQuestionLog?当它应该是一个聚合并被视为一个单元时,我不明白边界的位置?对我来说,User是一个聚合而Question是另一个聚合更自然。但是我不明白如何真正了解这一点。

问题也可以有类别,该类别是否也是问题的一部分?为什么/为什么不呢?如何发现它们?

1 个答案:

答案 0 :(得分:2)

不要想到这些物体,DDD就是关于现实生活的。

真正的问题是:

  • X可以存在吗?
  • Y是X的一部分吗?

因此:

  • 用户可以毫无疑问地存在吗?的
  • 如果用户退出,问题是否仍然可用?的
  • 是用户的日志部分吗?
  • 是问题的日志部分吗? (因为它属于用户,但不属于用户)
  • 是问题的类别部分吗? 通常是

所以我们最终得到了三个根聚合。

类别是价值对象