COLA 架构规范定义
基础架构图
- Adapter 适配层:对前端展示的路由和适配。
VO:返回给前端的对象
assembler:将 responseDTO 转换为 VO
web:处理页面请求的 Controller
wap:处理手机端请求的 Controller - Application 应用层:负责获取输入,组装上下文,调用领域层做业务流程编排,如果需要的话,发送消息通知等。若只是简单操作,应用层还可直接绕过领域层,访问基础层。避免在 Application 层做入参校验,可以通过 JSR303/380 和 Spring Validation 来前置校验。如何判断是否属于业务流程:不要有 if/else 分支逻辑,除非是 if 条件对象判空返回或者抛异常终止。
DTO:数据转换对象,只是为了和外部交互,所以本身不包含任何逻辑,属于贫血对象,包括 req 请求 DTO 和 res 响应 DTO
converter:实现 dto 与 model 之间转换或 dto 与 po 之间转换
consumer:处理外部消息通知,比如 MQ 消息
executor:处理 request,包括 command 和 query 两种(一般可用 CmdExe 表示)
scheduler:处理定时任务
rpc:实现 Client 中供外部调用的 Facade 接口,FacadeImpl - Client:封装 sdk 供外部调用
api:供外部调用的 Facade 接口
DTO:供外部使用的接口对应的 DTO
enums:枚举类 - Domain 领域层:封装核心业务逻辑,并通过领域服务(Domain Service)和领域对象(Domain Entity)向 App 层提供业务逻辑计算和业务实体。领域是应用的核心,不依赖其他任何层次。
model:领域模型,包含数据和行为
gateway:领域网关,与外部解耦利器
ability:领域能力,包括 DomainService,当某个行为影响到多个 Entity 时,属于跨实体的业务逻辑,在这种情况下就需要 DomainService 来完成,即业务需要涉及到多个 gateway - Infrastructure 基础实施层:处理技术细节,比如数据库 CRUD、搜索引擎、文件系统等,领域防腐的重任也落在这层,通过调用外部接口获取到的外部对象转换为实际 Domain 层所定义的对象模型,从而不直接使用外部对象。
PO:与数据库表一一映射关系,每个字段对应数据库表的一个 column,PO 只有数据,没有行为
factory:model 与 po 之间转换
mapper:数据库映射,持久化操作
common:工具包
gatewayImpl:网关实现
本文来自博客园,作者:这个杀手冷死了,转载请注明原文链接:https://www.cnblogs.com/pandacode/p/16093286.html