上次分享了一篇文章(DDD实战(一):如何设计分层架构?) ,接下来继续分享分层架构的依赖原则。
一、选择架构目的
不管选择哪个架构模式主要目的如下:
1、业务边界能够清晰,特别是微服务架构拆分的的时候。
2、业务模型能够具备独立性。
3、业务和技术能够通过领域模型进行沟通(观点达成一致)。
4、技术具备独立性,可以跟随业务的发展而不断迭代成长。
目前业内所熟知的 DDD分层架构、洋葱架构、六边形架构以及阿里出品的COLA,都具备以上特性,但是这些都不会是最终解决方案,所以在选取的时候也要根据团队的整体能力进行评估。
二、依赖原则
本小节主要是讲DDD分层架构中比较重要的依赖原则,如下图所示:
从上图可以看到每层仅可以和下方的层进行耦合,每一层各司其职,并且只需要关心向下一层实现,各层不进行耦合。
Adapter层(适配层):负责讲外部的请求适配到应用层,以及进入之前的各种校验,可以理解为MVC架构的Controller。
Application(应用层):负责获取输入的信息,并组装成上下文参数的校验,以及调用领域层的业务处理,甚至可以在这一层做一些技术监控指标的个性化处理。
Domain层(模型层):封装业务逻辑,定义领域模型和实体,通俗一点的讲这一层不需要明白数据从哪里来,我就要这样的数据,是面向接口编程。
Intrastructure层(基础设施层):主要是提供给领域层的接口实现(可能是db、redis和mq等),需要做到防腐。如果实际业务中不涉及到业务逻辑,那基础设施层可以直接开放给Adapter调用。
三、代码结构
四、参考源码
4.1 源码地址
4.2 前期准备
拉取Master分支代码
安装必要环境:jdk1.8+、mysql5.7+、redis等
启动 itunion-ddd-web 项目
4.3 访问地址
http://127.0.0.1:8080/itunion-ddd-web/api