| 最内层 | 领域实体、值对象与领域规则 |
|---|---|
| 中间层 | 应用服务与用例编排 |
| 最外层 | 数据库、消息、UI 等实现细节 |
- 依赖只向内:外层引用内层,内层不感知外层实现
- 内层定义接口,外层以适配器实现(依赖倒置)
- 应用服务编排用例:事务、授权与流程控制放中间层
- 领域层保持纯净:不引入 ORM、HTTP 等基础设施类型
- 跨层传数据用命令或 DTO 对象,避免持久化实体外泄
- 包结构反映分层:领域包不依赖应用与基础设施包
各层测试策略
| 层 | 测试方式 | 要点 |
|---|---|---|
| 领域层 | 单元测试 | 不启动框架,直接验证规则 |
| 应用服务 | 集成测试 | 用内存适配器替换数据库 |
| 基础设施 | 契约测试 | 验证适配器满足内层接口 |
| 常见违规 | 领域实体直接携带 ORM 注解或依赖框架类型 |
|---|---|
| 检查手段 | 把依赖方向写成自动检查,纳入构建流程 |
洋葱架构与六边形、整洁架构的差异主要在术语与层数,核心约束一致:依赖向内。