Appearance
这两篇笔记讲的挺好的,你可以先看一下。
码农会所的一些关于 DDD 的理解和说明
- 码农会所 - DDD 架构模式
- DDD 脚手架:DDD 脚手架
- 这个是码农会所小傅哥他自己写的一个DDD初始化项目脚手架,新建项目可以参考一下,不过具体还是看实际项目为主,也可以参考他,他使用的六边形架构,基本上很通用了。
实际项目中DDD 的使用和所见记录
依赖倒置是怎么做的,接口和实现具体在代码中是怎么体现的。
├── xxx-domain/ # 领域层(内核)
│ └── repository/ # ← 接口定义在这里
│ └── IOrderRepository.java
│ └── service/
│ └── OrderService.java
│
├── xxx-infrastructure/ # 基础设施层
│ └── repository/ # ← 实现在这里
│ └── OrderRepository.java
│ └── po/OrderPO.java关于 VO、DTO 等这些,在DDD 架构中,项目一般是怎么使用的, 我们通用的约定熟成是怎么做的。
| 对象 | 全称 | 活在哪一层 | 用途 |
|---|---|---|---|
| PO | Persistent Object | infrastructure | 和数据库表一一对应,ORM(MyBatis)操作的载体 |
| Entity | 领域实体 | domain | 领域模型的主体,有唯一标识、有业务行为 |
| ValueObject(VO) | 值对象 | domain | 无唯一标识、靠属性判等的不变对象,如 Address、Money |
| DTO | Data Transfer Object | 应用层/接口层 | 跨进程/跨层传输的数据包,无业务行为 |
| Query/Command | 请求对象 | trigger/接口层 | 入参封装(CQRS 风格分查询和命令) |
| VO(View Object) | 视图对象 | 前端/接口层 | 返回给页面的展示对象(注意:VO 一词有两个含义,看团队约定) |