goft
搜索文档…
领域层之聚合
聚合的概念其实不复杂,只不过很多地方把它写复杂了。
譬如我们有一个路由 GET /user/123,代表是访问用户ID=123的用户信息,输出
{
"userid":101,
"username":"lisi"
}
假设这个业务也就这么简单,那么就直接实体+DTO(后面再讲)就完事了。

如果稍微复杂点,这个路由有两个业务

1、取出用户信息
2、记录用户访问日志
那么此时,就涉及到用户实体和用户日志实体的操作。如果分开来写代码,时间长了就会很难维护。2个实体还好,如果有10个实体联合操作呢?

所以聚合的概念就来了

你可以粗暴的理解为: 用户实体和用户日志实体聚合成一个新对象叫做member
具体到代码就是:
1
type Member struct {
2
User *models.UserModel // 聚合根
3
UserLog *models.UserLogModel
4
5
}
Copied!
再粗暴点,你可以理解为把需要"一起操作“的实体 放到一起,就这。。。
只不过,这些“需要一起操作的实体们”,有个领头羊,就是聚合根。一切要围绕这个根开展工作。
试想一下,如果用户都没找到,其他如日志什么的还开展个啥?
最近更新 1yr ago
复制链接
内容