首页 > 其他分享 >Cola4.0 - DDD 设计思想

Cola4.0 - DDD 设计思想

时间:2023-02-28 17:34:40浏览次数:51  
标签:Layer java Service 思想 领域 Cola4.0 cola 应用层 DDD

cola前言

COLA提供了一整套代码架构,拿来即用。 其中包含了很多架构设计思想,包括讨论度很高的领域驱动设计DDD等。

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组件规范

img

分层架构图

img

cola包结构

应用层的包结构

img

领域层的包结构

img

基础设施层的包结构

img

命名规范

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

规范 用途 解释
xxxCmd.java Client Request Cmd代表Command,表示一个用户请求
xxxCo.java Client Object 客户端对象,用于传递数据,等同于DTO
xxxServiceI.java API Service API接口类
xxxCmdExe.java Command Executor 命令模式,每一个用户请求对应的一个执行器
xxInterceptor.java Command Interceptor 拦截器,用于处理切面逻辑
xxxExtPt.java Extension Point 扩展点
xxxExt.java Extension 扩展实现
xxxValidator.java Validator 校验器,用于校验的类
Convertor Convertor 转化器,实现不同层级对象互转
xxxAssembler.java Assembler 组装器,组装外部服务调用参数
xxxE.java Entity 代表领域实体
xxxV.java Value Ojbect 代码值对象
xxxRepository.java Repository 仓储接口
xxxDomainService.java Domain Service 领域服务
xxxDo.java Data Object 数据对象,用于持久化
xxxTunnel.java Data Tunnel 数据通道,DAO 是最常见的通道,也可是其他通道
xxxConstant.java Constant class 常量类
xxxConfig.java Configuration clas 配置类
xxxUtil.java Utility class 工具类

标签:Layer,java,Service,思想,领域,Cola4.0,cola,应用层,DDD
From: https://www.cnblogs.com/cool-fun/p/17165274.html

相关文章

  • # yyds干货盘点 # 盘点一个ddddocr实现登录的实战案例
    大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个​​Pyhton​​网络爬虫的问题,这里拿出来给大家分享下。二、实现过程一开始看上去并不能登录,找不到原因......
  • 【算法设计-分治思想】快速幂与龟速乘
    目录1.快速幂2.龟速乘3.快速幂取模4.龟速乘取模5.快速幂取模优化1.快速幂算法原理:计算311:311=(35)2x335=(32)2x332=3x3仅需计算3次,而非11......
  • 移动零(快排思想,快慢指针法)
    题目:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums......
  • 1.4 “道家”思想的核心与老子的论道
    道不是这个,也不是那个老子是道家学说的奠基人,一部《道德经》,是道家的最重要的三部著作之一。老子的核心观念就是一个“道”字。“道”字如何把它译成欧洲语言?最初的阶段......
  • (符合公司开发文档的)开发大佬说的单点登录的思想
    开发大佬说的单点登录的思想总的单点登录的思想:1。你判断看到当前用户没有登录,就跳转到对方的认证登录页面,让用户登录2、登录成功后,对方的认证服务器会回调你这边提供的......
  • 分享一个基本的分页模板(类似的分页都有工具,注意思想)
    publicclassBasePage<E>implementsSerializable{privatestaticfinallongserialVersionUID=1L;privateIntegerpageNo;privateIntegerpageSi......
  • 一文探寻学习DDD的意义
    序:《阿甘正传》中,阿甘开始了不停地跑步,一段时间后,后面就有了很多追随者一起跑,他们为什么跑哪?阿甘:我也不知道,只是想跑而已。追随者:感觉这样做是有意义的,而且阿甘也......
  • 一文探寻学习DDD的意义
    序:《阿甘正传》中,阿甘开始了不停地跑步,一段时间后,后面就有了很多追随者一起跑,他们为什么跑哪?阿甘:我也不知道,只是想跑而已。追随者:感觉这样做是有意义的,而且阿甘也......
  • 编程思想
    BOP:面向过程OOP:面向对象AOP:面向切面。将公共,通用的功能,提取出来。AOP优势:1、将通用功能从业务逻辑中抽离出来,提高代码复用性,有利于后期维护2、在代码设计上,抽出通......
  • 双指针法(巧妙思想)
    双指针法(巧妙思想)21.合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],......