在学习ddd的时候,有最大一个困惑就是:我应该把哪些抽象成为领域,哪些是作为一个聚合根呢?
一个能够完全驾驭某个系统DDD架构的人,他必须是领域专家+代码抽象高手,很明显这个不是一个容易的事情。
我们现在很多时候是“面向数据库表”编程,很多时候一个表就对应着一个model,然后就dao->service->controller层,给到外面使用。
可以在把一个叫XXService里面把spring的相关依赖,比如@Service,@Inject @Resource,删掉。 进行对象的抽取,封装,重构【这一步不一定能够马上重构完成,但是代码是一直迭代前进的,需要持续不断思考对象的抽象】直到新抽象出来的对象,不依赖于除了domain层的任何外部的包。
这个时候代码结构是:
- controller
- service
- model
- dao
变成 - application<-controller
- domain <-service
- infrastructure <- dao
至于domain如何从数据库取数,则从domain中新增iXxxRepo.java接口,由infrastructure实现,最后由application拼装domain层的能力,最终实现业务需求,由application屏蔽业务场景的差异
标签:重构,domain,dao,application,抽象,ddd From: https://www.cnblogs.com/yudengc515/p/18194838