gpt4 book ai didi

domain-driven-design - 领域驱动设计(一个示例博客应用程序)

转载 作者:行者123 更新时间:2023-12-01 12:45:44 25 4
gpt4 key购买 nike

我最近在学习 DDD,并不太了解其中的概念。我有一些关于示例博客应用程序的问题。

假设博客系统中有四个域对象:User , Blog , PostComment .一 User只能有一个 Blog , Blog有多个 Post实体和 Post有很多Comment实体。

我的设计是Blog是聚合根:

class Blog {
private User;
private List<Post> posts;
}

class Post {
private List<Comment> comments;
}

class BlogRepository {
public void saveBlog(Blog blog);
public void findBlogById(long id);
public void getAllBlogs();
}

我这样设计聚合根和存储库是否正确?

我有一些要求来获得所有 Comment用户为所有 Blog 添加的实体实体,还有 User允许修改她/他自己的 Comment .

我的问题是如何实现这些要求?

最佳答案

虽然您提供的模型反射(reflect)了域,但它不是最佳的 DDD 实现。使用 DDD,除了考虑实体之间的关系之外,还必须考虑事务一致性边界。因此,最好设计一个Blog , PostUser作为单独的聚合,仅通过 ID 相互引用。而且,没有理由说Blog实体需要有一个帖子集合。您永远不需要加载整个博客,并且行为永远不会跨越多个帖子。相反,提供一个分页存储库方法来加载博客帖子的子集。 A Comment但是可以是一个值对象,因此评论集合应该与 Post 一起加载。总计的。获取用户所有评论的最简单方法是创建一个存储库查询方法,该方法返回 read-model防止将查询与实体中的行为混淆。有关设计聚合的更多信息,请查看 Effective Aggregate Design .

关于domain-driven-design - 领域驱动设计(一个示例博客应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16188306/

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