我开始设计第一个简单的应用程序DDD风格,我开始看到这些概念是如何协同工作的。
如果我设计一个经典的博客应用程序,Article类将是我的聚合根之一。我想检索文章,管理和删除所有相关数据(出版日期,作者......)。我的评论有困难。起初,Comment似乎是作为Article聚合的一部分的实体:关于文章创建注释,如果我删除文章,我将删除相关注释。
然后我想在博客上显示一个小方框,其中包含博客上发布的最新评论,适用于任何文章。所以看起来我想从我的数据存储中检索注释(只有注释)。根据我对DDD思想的理解,这使它成为一个集合根。但这似乎并不完全正确,因为评论似乎强烈依赖于文章。
你会如何塑造它?
感谢。
答案 0 :(得分:7)
当您考虑它时,您可能会发现Comment
应该是聚合本身的各种原因:
我将以下内容作为一般经验法则:尽可能减少聚合。如果有疑问,可以选择更多的聚合。
通过这种方式建模,您可以将评论附加到多个对象,例如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