COLA架构

COLA架构

COLA架构设计

COLA 的分层是一种经过改良的三层架构,主要是讲传统的业务逻辑层拆分为应用层、领域层和基础设施层。
在这里插入图片描述

  1. 展示层(Presentation Layer):负责以 Rest 的风格接收 Web 请求,然后将请求路由给 Application 层执行,并返回视图模型(View Model),其载体通常是数据传输对象(Data Transfer Object, DTO);
  2. 应用层(Application Layer):主要负责获取输入、组装上下文、做输入校验、调用领域层做业务处理,当需要时发送消息通知。当然,层次是开放的,若有需要,应用层也可以直接访问基础设施层;
  3. 领域层(Domain Layer):主要封装了核心业务逻辑, 并通过领域服务(Domaini Service)和领域对象(Entities)的函数对外部提供业务逻辑的计算和处理;
  4. 基础设施层(Infrastructure Layer):主要包含数据访问通道(Tunnel)、Config 和 Comon。这里Tunnel这个概念对所有的数据来源进行抽象,数据来源可以是数据库(MySQL/NoSQL)、搜索引擎、文件系统,也可以是SOA服务等;Config 负责应用的配置;Common是通用的工具类;

规范设计

COLA制定了一系列的规范,包括组件(Module)结构、包(Package)结构、命名等。

组件规范

COLA规定一个应用至少要有3个组件:应用层、领域层和基础设施层。如果不是严格的前后端分离,也可以加入展示层的组件,但这是可选的。组件的依赖关系如下:
在这里插入图片描述

从上面的依赖关系可以看到,领域组件(Domain Module)是应用的核心,负责核心业务逻辑的处理,不应该有任何的外部依赖。领域组件的实现方式有两种,一种是把领域组件设计成纯POJO,另一种是通过依赖倒置,将数据访问的接口放在领域组件里,让基础设施组件(Infrastructure Module)去做接口的实现。

包规范

应用的包结构

在这里插入图片描述

领域层的包结构

在这里插入图片描述

基础设施层的包结构

在这里插入图片描述

命名规范

在COLA架构中,制定了一系列的命名规范,以便通过名称就能知晓该类的作用和职责范围,从而极大的提升代码的可理解性,提升代码审查的效率。
对于类名的主要约定如表

规范用途解释
xxxCmd.javaClient RequestCmd代表Command,表示一个用户请求
xxxCo.javaClient Object客户端对象,用于传递数据,等同于DTO
xxxServiceI.javaAPI ServiceAPI接口类
xxxCmdExe.javaCommand Executor命令模式,每一个用户请求对应的一个执行器
xxxInterceptor.javaCommand Interceptor拦截器,用于处理切面逻辑
xxxExtPt.javaExtension Point扩展点
xxxExt.javaExtension扩展实现
xxxValidator.javaValidator校验器,用于校验的类
xxxConvertor.javaConvertor转化器,实现不同层级对象互转
xxxAssembler.javaAssembler组装器,组装外部服务调用参数
xxxE.javaEntity代表领域实体
xxxV.javaValue Ojbect代码值对象
xxxRepository.javaRepository仓储接口
xxxDomainService.javaDomain Service领域服务
xxxDo.javaData Object数据对象,用于持久化
xxxTunnel.javaData Tunnel数据通道,DAO 是最常见的通道,也可是其他通道
xxxConstant.javaConstant class常量类
xxxConfig.javaConfiguration class配置类
xxxUtil.javaUtility class工具类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simba1949

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值