分层与对象命名规范


如上图所示,系统划分成3个层:Controller层,Service层,Domain层

Controller层:

Controller层是接入层,提供对外或者前端的接口,该层主要作用是提供对外接口的封装。基于CQRS分离模式,该层对象主要由Command,Query和Vo组成。其中:

Command:

Command代表命令接口,接口会改变系统的数据,一步需要考虑事务。

Query:

Query代表查询接口,接口只会查询数据,不会改变系统数据,例如各种前端的展示页面使用的接口。Vo是接口返回结果的对象化封装。

命名规范:

对象规范示例
Command方法名+CommandAddUserCommand, UpdateUserCommand
Query方法名+QueryListUserQuery, PageListUserQuery,FindByNameUserQuery
Vo方法名+VoListUserVo, PageLIstUserVo, FindByNameUserVo

Service层:
Service层是服务层,主要负责系统业务逻辑的部分。Service层对象不分出参和入参,统一命名为Dto。注意,Service层对象除了Dto还可以包含基础的封装对象例如:Integer, String等基础类型。

Domain层:
Service层是领域服务层,主要包含与数据库一一对应的Entity对象。

转换
层与层之间的对象不能跨层使用,必须进行对象拷贝转换。

总结如下表:

层次入参对象返回对象
Controller层xxxCommand/xxxQueryxxxVo
Service层xxxDto /基础包装类xxxDto /基础包装类
Domain层xxxEntityxxxEntity

注意

Dto,Command,Query,Vo命名规范只对最外层的总包对象做命名规范要求。里层包裹的复用对象不做规范要求,建议复用对象都叫Pojo结尾即可。

分包规范

Command/Query/Vo

Command/Query/Vo 分别放在api或者controller包下的Command子包,Query子包和Vo子包。如下图所示:

Dto

Dto 放在Service包下的dto子包中,如下图所示

Entity

Entity放在domain.entity包下,如下图所示

对象继承规范

公共基础库基础对象继承关系

跨类型字段复用方案


Controller层与Service层对象复用字段的公共类放在common项目中,如下图所示

对象转换

对象转化统一使用base-common库中的ConvertUtil类进行转换。转换使用浅拷贝的方式避免带来性能损耗。

对象转对象

如下图示例

对象列表转对象列表

如下图示例

综合样本代码

综合使用可以参考模版工程中的User的增删改查例子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93730.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93730.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93730.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低功耗模式

1. 什么是低功耗?低功耗模式:MCU 暂停部分时钟/外设,降低电流消耗,等待外部事件(中断/复位/唤醒)再恢复运行。应用场景:电池供电设备(传感器、手持设备、IoT 节点)——延…

GPT-5 官方前瞻:它将如何重塑你的数字生活?

你是否曾想过,有一天你的浏览器不再是一个被动等待指令的工具,而是一个能主动为你分忧解难的智能伙伴?OpenAI 的 CEO Sam Altman 最近的发言,以及关于 GPT-5 的种种迹象,都预示着这个未来比我们想象的更近。这不仅是一…

驱动开发系列65 - NVIDIA 开源GPU驱动open-gpu-kernel-modules 目录结构

一:OS相关部分 kernel-open/ 内核接口层 kernel-open/nvidia/ nvidia.ko 的接口层,负责GPU初始化,显存管理,PCIe通信,中断处理,电源管理等底层功能。 kernel-open/nvidia-drm/ nvidia-drm.ko 的接口层,提供标准图形接口,让Xorg、Wayland、Kwin、GNOME等桌面环境能够通…

GPT-4.1旗舰模型:复杂任务的最佳选择及API集成实践

GPT-4.1旗舰模型:复杂任务的最佳选择及API集成实践 概述 GPT-4.1作为新一代旗舰大模型,凭借其卓越的智能表现、强大的跨领域问题解决能力,成为复杂任务处理的首选。本文将详细解析GPT-4.1的核心能力、接口用法、计费方式、功能对比及API集成…

paimon保姆级教程简介

还在纠结 Flink 配 Hudi 还是 Iceberg?别选了,快来试试 Flink 的“天选之子”—— Apache Paimon! 忘掉复杂的 Lambda 架构,拥抱真正的流批一体。我们的 Paimon 视频教程,带你用 Flink 原生湖仓格式,轻松构…

Transformer中的编码器和解码器是什么?

今天,我们来具体介绍Transformer的架构设计。 一个完整的Transformer模型就像一个高效的语言处理工厂,主要由两大车间组成:编码车间和解码车间。 首先来看这幅“世界名画”,你可以在介绍Transformer的场景中常常看到这幅图&#x…

uniapp 应用未安装:软件包与现有软件包存在冲突

应用未安装:软件包与现有软件包存在冲突常见原因包名(AppID)没变,但签名证书不同安卓会把同一包名的 App 当成同一个应用。如果你之前安装的版本用了 A 签名,现在你打包用了 B 签名,就会冲突,导…

MyCAT2的主从配置

1.创建数据源重置配置:/* mycat:resetConfig{} */添加读写的数据源/* mycat:createDataSource {"dbType": "mysql","idleTimeout": 60000,"initSqls": [],"initSqlsGetConnection": true,"instanceType&quo…

个人介绍CSDNmjhcsp

年龄:12岁 住址:山东潍坊 看的这,有人懵了,访问量4.8万的mjhcsp竟然是一个小孩! 好吧,我的强项其实是C,但是C发表文章很少,我平常写一写java,云原生,Deeps…

01-Docker-简介、安装与使用

1. docker简介 Docker 是一个应用打包、分发、部署的工具你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。 2. 相关概念 …

阿里云参数配置化

阿里云参数配置化 一、问题描述 当我们直接在AliOSSUtils.java中对所需的阿里云OSS相关参数进行赋值时,当相关参数发生改变,但是又在多次进行了赋值这些参数,那么就需要逐一进行修改,所以我们直接在SpringBoot项目的配置文件appli…

Diamond开发经验(1)

前言: 学习Lattice的芯片开发的过程中,很多实际开发过程中遇到的问题是没办法绕过的,虽然我今天被绕了一天(此句多余,单纯记录美好心情哈哈哈哈)将这些解决方法梳理成文章供大家参考,十个问题组成一篇文章。…

神经网络训练过程详解

神经网络训练过程详解 神经网络训练过程是一个动态的、迭代的学习过程,接下来基于一段代码展示模型是如何逐步学习数据规律的。 神经网络拟合二次函数:代码详解 下面将详细解释这段代码,它使用神经网络拟合一个带有噪声的二次函数 y x 2x …

LeetCode100-560和为K的子数组

本文基于各个大佬的文章上点关注下点赞,明天一定更灿烂!前言Python基础好像会了又好像没会,所有我直接开始刷leetcode一边抄样例代码一边学习吧。本系列文章用来记录学习中的思考,写给自己看的,也欢迎大家在评论区指导…

【PZ-ZU47DR-KFB】璞致FPGA ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明

1 Flash 固化Flash 固化需要先生成 BOOT.bin 文件,这边以裸机的串口工程进行讲解如何生成 BOOT.bin 文件及 Flash 固化操作。有读者会遇到,只使用 PL 端的情况,也需要进行 Flash 固化。我们需要添加 PS 端最小配置(包含 Flash 配置…

数据结构:查找表

一、数据结构的概念数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。它不仅仅是存储数据的方式,更强调数据之间的逻辑关系和操作方法。数据结构主要从以下几个角度来理解:1. 数据之间的关系逻辑结构:集合结构:元素之…

自建知识库,向量数据库 (十)之 文本向量化——仙盟创梦IDE

自建文章向量化技术:AI 浪潮下初学者的进阶指南 在人工智能(AI)蓬勃发展的浪潮中,向量化作为将文本数据转化为数值向量表示的关键技术,成为理解和处理文本的基石。本文将结合给定的代码示例,深入探讨自建文…

数据结构 -- 顺序表的特点、操作函数

线性表顺序存储的优缺点优点无需为表中的逻辑关系增加额外的存储空间,利用连续的内存单元存储数据,存储密度高。支持 随机访问,通过下标可在 O(1) 时间复杂度内定位元素(如数组按索引取值),查询效率稳定。缺…

反向代理实现服务器联网

下载脚本:https://gitee.com/995770513/ssh-reverse-socket然后解压到 D:\Download在本机运行 cd D:\Download\ssh-reverse-socket-master\ssh-reverse-socket-master python socket5_proxy.py --ssh_cmd "xaserver10.150.10.51 -p 22" --socket5_port 78…

C语言关于函数传参和返回值的一些想法2(参数可修改的特殊情况)

我最近写了一篇文章名为“C语言关于函数传参和返回值的一些想法”(C语言关于函数传参和返回值的一些想法-CSDN博客),里面提到了一种观点就是传参的参数在函数体内部是只读的,不能写它,因为如果写了,也就是污…