gpt4 book ai didi

domain-driven-design - DDD : should "Comment" in an "Article" be an aggregate root?

转载 作者:行者123 更新时间:2023-12-04 08:21:58 25 4
gpt4 key购买 nike

我开始设计第一个简单的 DDD 风格的应用程序,并且开始了解这些概念如何协同工作。

如果我设计一个经典的博客应用程序,Article 类将是我的聚合根之一。我想检索文章、管理和删除所有相关数据(出版日期、作者...)。我对评论有困难。起初,评论似乎是文章聚合的一部分:评论是针对一篇文章创建的,如果我删除一篇文章,我将删除相关评论。

然后我想在博客上显示一个小框,其中包含博客上发布的最新评论,用于任何文章。所以看起来我想从我的数据存储中检索评论(并且只有评论)。根据我对 DDD 思想的理解,这使它成为一个聚合根。但这似乎并不完全正确,因为评论似乎强烈依赖于文章。

你会如何建模?

谢谢。

最佳答案

当您考虑它时,您可能会发现为什么 Comment 应该是 Aggregate 本身的各种原因:

  • 您想列出最新评论
  • 您可能希望列出特定用户的所有评论
  • 您可能希望嵌套评论(评论是对另一评论的回复)
  • 您可能希望通过管理界面批准/拒绝评论
  • 用户可能想要编辑或删除他/她的评论
  • ...

我将以下作为一般经验法则:使您的聚合尽可能小。如有疑问,请选择更多聚合。

通过这种方式建模,您可以将评论附加到多个对象,例如 ArticleUser

Comment
string Text
string UserName
bool IsApproved

Article
string Title
string Body
...
List<CommentIds> CommentIds

User
string UserName
...
List<CommentIds> CommentIds

ListOfTenLatestComments
List<CommentIds> CommentIds

关于domain-driven-design - DDD : should "Comment" in an "Article" be an aggregate root?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com