我开始设计第一个简单的应用程序DDD样式,并开始了解这些概念是如何协同工作的。
如果我设计一个经典的博客应用程序,Article类将是我的聚合根之一。我想检索文章,管理和删除所有相关数据(发表日期,作者…)。我在评论方面遇到了困难。起初,评论似乎是文章聚合的一部分:评论是针对文章创建的,如果我删除文章,我将删除相关评论。
然后我想在博客上显示一个小框,里面有博客上发布的最新评论,用于任何文章。所以看起来我想从我的数据存储中检索评论(并且只检索评论)。根据我对DDD思想的理解,这使它成为一个聚合根。但这似乎并不完全正确,因为评论似乎强烈依赖于文章。
你会如何建模?
谢谢
仔细想想,你可能会发现 Comment 应该是 总数的 本身:
Comment
我认为以下是一条一般的经验法则:保持你的聚合尽可能小。如果有疑问,请选择更多的聚合。
通过这种方式建模,您可以将注释附加到多个对象,例如 Article 和 User
Article
User
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