主题
面试速答(先看这里)
**一句话结论:**层次之间的调用关系是上层可以调用下层,即用户接口层可以调用应用层、领域层及基础层。
60秒标准回答:
DDD的分层架构是一个四层架构,从上到下依次是:用户接口层、应用层、领域层和基础层
层次之间的调用关系是上层可以调用下层,即用户接口层可以调用应用层、领域层及基础层。应用层可以调用领域层和基础层,领域层可以调用基础层
但是不能从下往上反向调用,各个层级之间是严格的单向调用的依赖关系
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**DDD的分层架构是一个四层架构,从上到下依次是:用户接口层、应用层、领域层和基础层。
- **要点2:**但是不能从下往上反向调用,各个层级之间是严格的单向调用的依赖关系。
- **要点3:**除了这种简单的四层架构以外,DDD中还有比较典型的洋葱架构和六边形架构
- **要点4:**洋葱架构,就是像洋葱一样的一层一层,从外到内的架构形式,如下图:
- **要点5:**虽然 DDD 分层架构、整洁架构、六边形架构的架构模型表现形式不一样,但是这三种架构模型的设计思想都是微服务架构高内聚低耦合原则的完美体现, 都是以领域模型为中心的设计思想 。
**记忆锚点:**DDD → 六边形架构的架构模型 → 但是这三种架构模型 → 都是以领域模型 → 即用户接口 → 用户接口
易错提醒:
- 但是不能从下往上反向调用,各个层级之间是严格的单向调用的依赖关系。
追问准备:
- 围绕「DDD」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「六边形架构的架构模型」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「但是这三种架构模型」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
DDD的分层架构是一个四层架构,从上到下依次是:用户接口层、应用层、领域层和基础层。

层次之间的调用关系是上层可以调用下层,即用户接口层可以调用应用层、领域层及基础层。应用层可以调用领域层和基础层,领域层可以调用基础层。
但是不能从下往上反向调用,各个层级之间是严格的单向调用的依赖关系。
除了这种简单的四层架构以外,DDD中还有比较典型的洋葱架构和六边形架构
洋葱架构,就是像洋葱一样的一层一层,从外到内的架构形式,如下图:

他的依赖关系是从外到内的。
六边形架构和洋葱架构有点像,只不过不是圆形,而是六边形的:

虽然 DDD 分层架构、整洁架构、六边形架构的架构模型表现形式不一样,但是这三种架构模型的设计思想都是微服务架构高内聚低耦合原则的完美体现,都是以领域模型为中心的设计思想。

本文图片参考自:《极客时间——DDD实战课》