在 DDD 中,评论是否包含在帖子聚合中?

use*_*924 2 domain-driven-design

抱歉英语不好。

在学习 DDD 时,我有一个关于聚合的问题。

Board域中,我们有两个实体,一个是Post,另一个是Comment

我认为Comment没有 就不可能存在Post。所以我认为Comment应该在Post聚合中,并且Board域有一个聚合,其根是Post

但从不同的角度来看,同一个聚合中的实体具有相同的生命周期,因此Comment生命周期与 的生命周期不同Post,修改Post不影响Comment,反之亦然。

所以Board域有两个聚合,

一个是根是的聚合Comment,另一个是根是的聚合Post

这两个想法让我感觉很混乱。

Moh*_*gue 5

我以前也去过那里,而且我是通过艰难的方式才学会的。起初,将评论部分包含在帖子聚合中似乎很自然,但以下是您可能会遇到此设计的限制。

  • 您可能需要删除帖子并保留评论。与您在某些社交媒体平台上看到的一样。
  • 一篇帖子可能有很多评论,以至于每次获取帖子时将它们全部加载到内存中会变得非常昂贵。
  • 用户可以直接与评论交互(反应、对评论进行评论、分享、提及其他用户......),因此如果评论可以在整个系统中唯一标识,那就更容易了。
  • 您可能需要列出用户的所有评论。当评论是帖子聚合的一部分时,事情就会变得更加困难。

将 PostComment 作为单独的聚合并保留帖子的引用会更安全。作为设计聚合的一般规则,您应该使它们尽可能小。