概要
学习一下领域驱动设计(DDD),我们公司也使用了DDD,可以先对比一下传统三层架构。
三层架构中大部分业务都集中在service层,业务量大的话,业务层就会特别臃肿。
DDD领域驱动设计中,对业务进行了领域管理,对业务进行了管理。(我的理解是这样)
自己搭了一个DDD模型项目
DDD模型项目
`
-
创建maven项目
-
项目名称
-
父工程依赖管理
-
建立5个子项目
demonstration-oneself-controller-------------适配层demonstration-oneself-application-----------应用层
demonstration-oneself-domain---------------领域层
demonstration-oneself-infrastructure-------基础设施层
demonstration-oneself-api--------------------为远程RPC提供服务
不好意思,流程图画的有些丑,之前没用过画流程的工具。。。。。
1)适配层(AdapterLayer):负责对前端展示路由和适配,adapter就相当于MVC中的controller;
2)应用层(Application Layer):主要负责获取输入,组装上下文,参数校验,调用领域层做业务处理,如果需要的话,发送消息通知等。层次是开放的,应用层也可以绕过领域层,直接访问基础实施层;
3)领域层(Domain Layer):主要是封装了核心业务逻辑,并通过领域服务(Domain Service)和领域对象(Domain Entity)的方法对App层提供业务实体和业务逻辑计算。领域是应用的核心,不依赖任何其他层次;
4)基础实施层(Infrastructure Layer):主要负责技术细节问题的处理,比如数据库的CRUD、搜索引擎、文件系统、分布式服务的RPC等。
web应用设计
这里我打算建一个common工具类,里面引入web依赖,在项目api层引入common依赖
controller层中建立启动类
依赖关系
api层依赖common
application层依赖api层和infrastructure层
controller依赖application层
domin层也直接引入infrastructure层
小结
文章先到这里,后续都会用这个项目更新代码,不对的地方希望大家指正。