COLA(Clean Object-Oriented and Layered Architecture)
COLA是阿里巴巴开源的应用架构,旨在帮助开发者轻松构建复杂的业务应用。它将应用程序分为四个主要部分:适配器层、应用层、领域层和基础设施层。在Java开发中,COLA常用于构建大型、复杂的企业级应用。
-
适配器层(Adapter Layer):负责处理来自外部的请求并返回响应。在Java中,这可能是基于Spring MVC的控制器,RESTful API接口,或其他类型的适配器如消息队列监听器等。
-
应用层(Application Layer):定义系统的功能并指挥领域对象解决问题。它不包含业务规则,而是协调和委派领域对象。在Java中,这通常是一组应用服务(Application Services),处理用户的用例。
-
领域层(Domain Layer):包含业务逻辑和业务规则。这是COLA的核心,包含实体(Entity)、值对象(Value Object)、领域服务(Domain Service)等。在Java中,这些是封装了业务逻辑的普通Java类。
-
基础设施层(Infrastructure Layer):为其他层提供技术支持。包括持久化机制、消息传递、第三方接口集成等。在Java中,这可能包括数据库访问的实现、外部服务的客户端、消息队列的生产者和消费者等。
COLA架构还特别强调了领域驱动设计(DDD)的概念,并提供了一套完整的代码组织方式和最佳实践,以帮助开发者更好地实现复杂的业务逻辑:COLA。
层级 | 包名/类名 | 类名/对象 | 解释 | 对应三层架构 |
---|---|---|---|---|
适配器层 | adapter.web | XxxController | REST控制器,处理HTTP请求 | 表示层 |
adapter.mobile | XxxMobileApi | 移动端API适配器 | 表示层 | |
adapter.rpc | XxxRpcService | RPC服务实现,处理远程调用 | 表示层 | |
应用层 | app | XxxServiceImpl | 应用服务实现,编排领域对象 | 业务逻辑层 |
app.command | XxxCmd | 命令对象,封装业务请求 | 业务逻辑层 | |
app.query | XxxQry | 查询对象,封装查询条件 | 业务逻辑层 | |
app.dto | XxxDTO | 数据传输对象 | 业务逻辑层 | |
app.assembler | XxxAssembler | DTO与领域对象转换器 | 业务逻辑层 | |
领域层 | domain.model | XxxEntity | 领域实体 | 业务逻辑层 |
domain.model | XxxAggregate | 聚合根 | 业务逻辑层 | |
domain.model | XxxValueObject | 值对象 | 业务逻辑层 | |
domain.gateway | XxxGateway | 领域网关接口,定义外部依赖 | 数据访问层 | |
domain.ability | XxxAbility | 领域能力,封装复杂的业务规则 | 业务逻辑层 | |
基础设施层 | infrastructure.repository | XxxRepositoryImpl | 仓储实现,实现数据持久化 | 数据访问层 |
infrastructure.gateway | XxxGatewayImpl | 网关实现,实现与外部系统的集成 | 数据访问层 | |
infrastructure.mq | XxxProducer | 消息生产者,发送消息到消息队列 | - | |
infrastructure.mq | XxxConsumer | 消息消费者,处理从消息队列接收的消息 | - | |
infrastructure.converter | XxxConverter | 数据转换器,在不同数据格式间转换 | - | |
infrastructure.config | XxxConfig | 配置类,包括数据源、缓存等配置 | - | |
客户端 | client | XxxServiceI | API接口定义,供外部调用 | 表示层 |
client.dto | XxxClientDTO | 客户端DTO,用于外部交互 | 表示层 | |
启动类 | com.example | Application | Spring Boot启动类 | - |