Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于domain层 #4

Open
xushuhui opened this issue Aug 18, 2022 · 6 comments
Open

关于domain层 #4

xushuhui opened this issue Aug 18, 2022 · 6 comments

Comments

@xushuhui
Copy link

为什么单独抽出来domain层,而不是放在biz层?

@rockygao
Copy link
Collaborator

domain跟biz都是独立的,domain既可以用于biz,也可以用于service,抽出来是合适的

@xushuhui
Copy link
Author

请教个问题,不太理解kratos中的usecase,在查询一个视频详情的时候前端需要显示视频作者的头像昵称等信息,是单独做一个作者的usecase,在service层分别调用视频usecase和作者usecase,还是在biz做数据组装,如果在biz层做,视频领域对象跟作者领域对象本身就是两个域,是不是不符合ddd?

@mojiruwo
Copy link
Collaborator

kratos的usecase类似于传统的service层,可以用来组合repo,甚至组合同级别的usecase

两个领域的对象,可以看做两个repo组合成一个dto

类似于

type dto struct {
*domain.Video
User *domain.User
}

这套框架类似于传统模式的mvc,只不过在domain的基础上增加了do,所有属于domain的方法都集中在一起,避免重复定义和统一修改,这是我的理解

@xushuhui
Copy link
Author

type VideoUsecase struct { videoRepo authorRepo }

是在usecase中定义两个repo还是在service中定义两个usecase

type VideoService struct { videoUsecase authorUsecase }

@hedeqiang
Copy link

可能得了解下 ddd

@mojiruwo
Copy link
Collaborator

怎么组合要看业务是否有通用的地方,我更倾向于两个repo

如果你有一个usecase很多地方都能通用,可以考虑封装一个usecase,供其他usecase调用

比如
type struct VideoUsecase struct {
VideoRepo
UserUsecase
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants