代码的分层结构
作者:互联网
代码要如何组织才能提高可维护性呢?controller - service - repo 经典三层结构:
```
module
├─controller
├─model
├─repo
└─service
```
这样的分层比较基础,项目发展到一定规模,模块间重用多起来,就会出现各种问题,显得灵活性不够了,还有形成循环引用的风险。
.
借鉴了DDD的分层,可以将代码按下面进行分层:
```
module
├─action
├─application
│ ├─dto
│ └─service
├─domain
│ ├─model
│ └─rule
└─infra
```
1. action,放置controller, 负责参数提取和验证
2. application/service,面向request的Facade service,组合底层服务满足业务需求
3. application/dto,面向request的数据封装,包括输入数据和输出数据
4. domain/rule,完整的业务逻辑实现,只调用本模块的infra
5. domain/model,完整的数据建模。
6. infra,原子级的数据交互层,可以与DB,MQ,ES等进行交互操作
有一些调用原则:
1. 只能由上层引用下层,action -> application -> domain -> infra
2. 跨模块调用时,只能由一个模块service调另一个模块的rule,这样可以避免循环引用,使调理清晰
当然,这些都是手段而已,不能保证一定会有好的代码。好的代码都需要用心去写,与君共勉。
标签:domain,service,代码,infra,application,分层,模块,结构 来源: https://blog.51cto.com/wikiou/2901741