COLA 架构使用规范化

基础架构图

COLA 架构使用规范化_第1张图片

  • 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:网关实现

你可能感兴趣的:(JAVA,java,系统架构)