DDD的代码结构_ronshi的博客-CSDN博客_ddd代码结构
DDD( 领域驱动设计)概念来源于2004年著名建模专家eric evans的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名:领域驱动设计—软件核心复杂性应对之道)。
DDD领域驱动设计,代码层次结构分为五层:adapter层、client层、app层、domain层、infrastructure层。如果是web服务,则包含adapter层。如果是业务服务,则可以去掉adapter层。
一、adapter层
adapter层主要是根据请求来源或类型进行适配,对app层的结果进行封装。
com.域名.项目名
├── adapter // 适配层模块
│ └── web // 网页端
│ └── mobile // 手机端
│ └── service // 服务端
二、client层
client层是对外提供的SDK,包含API的定义,以及数据传输对象。
com.域名.项目名
├── client // sdk模块
│ └── api // 网关实现层
│ └── dto // 数据接口
三、app层
app层是应用层,主要负责领域的整合和事务的管理,以及定时任务和消息的处理。
com.域名.项目名
├── app // 应用模块
│ └── executor // 执行层
│ └── query // 查询层
│ └── command // 命令层
│ └── consumer // 消息层
│ └── scheduler // 定时任务
四、domain层
domain层是领域层,主要是聚合的划分,包括聚合根、实体、值对象,以及领域能力和网关接口。
com.域名.项目名
├── domain // 领域层模块
│ └── model // 模型层
│ └── aggregate // 聚合层
│ └── entity // 实体层
│ └── valueobject // 值对象层
│ └── ability // 领域能力层
│ └── gateway // 网关接口层
五、infrastructure层
infrastructure层是基础设施层,采用了依赖倒置的原则,infrastructure层依赖于domain层,是领域层网关的具体实现。