一、通用DDD架构
首先,看下图:
左图、是经典的DDD架构分层图。右图、在使用依赖倒置原则下的分层图。
两个结构图对比,最典型的区别就是基础设施层,在最上层还是最底层。由于,我们项目都在使用spring或者guice等ioc工具,所以推荐使用右图的分层架构。
在DDD中,推崇使用端口适配器模式(也叫六边形架构)来做服务代码边界切分,系统内部处理自己的领域服务,通过适配器接口方式和外部进行交互。简而言之,即模块层次之间面向接口开发,内部无约束。如下图:
二、项目结构分层实践
按照DDD架构的思想,结合我们日常使用场景,列出通用的项目代码模块。
1 |
|
对外部署,为dragonfly-deploy模块,该模块会集成其他所有模块,因此,给出目前项目结构图:
** 和传统分层架构,最大的不同,在于我们把基础设施层dragonfly-infrastructure放在最上层。参考六边形架构,我们其实只区分上下两层,基础设施层位于上层,其他位于下层。**
** 因此,基础设施层负责实现图三中应用内部整块的适配器(接口),而领域层,应用层负责提供需要外部实现的能力接口即可。**
下面,具体来介绍每一个模块(排除dragonfly-api和dragonfly-deploy两个场景模块)的定位和使用。
2.1 基础设施层 dragonfly-infrastructure
1 | /** |
2.2 用户接口层 dragonfly-presentation
1 | /** |
2.3 应用层 dragonfly-application
1 | /** |
2.4 领域层 dragonfly-domain
1 | /** |
2.5 通用工具集 dragonfly-common
1 | /** |
三、一些实践中的重点
待后续补充