背景
简单的应用分层 controller,service,mapper三层。看起来非常简单,但是并没有把他们职责划分开。很多代码中controller比service逻辑还多。service调用service代码。这样往往造成后续代码无法复用,层级关系混乱。
好的应用分层具备下面几个特点:
- 方便后续代码维护
- 分层效果让团队都接受
- 各个层级职责边界清晰
分层
阿里巴巴分层思想

- 统一工具层
和业务无关的统一工具类,例如日期处理或者序列化反序列化工具等 - 分层领域模型
这里的领域模型在DDD中称为贫血模型。贫血模型只作为数据载体,只有getter/setter方法。不包含业务方法
- DO: 对应着数据实体entity
- DTO: 某个业务中需要多次查询获取不同数据对象,最后会把多个数据对象组合成一个DTO向外传输。所有包都在DTO中
- VO: 用于给前端显示的VO对象
- Query: 数据查询对象,各层接受上层的查询请求,一般用户Controller接受传过来的参数。
- DAO
数据访问对象,用于数据库的访问。用于不同数据源的访问 - Service和Manager
Manager作用为:
- 对第三方平台封装的层, 预处理返回结果及转化异常信息
- 对Service层通用能力的下沉,如缓存方案,中间件通用处理
- 和DAO交互对DAO进行组合复用

网友评论