Java團隊項目開發規范——對象分層規范

分層與對象命名規范


如上圖所示,系統劃分成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博客),里面提到了一種觀點就是傳參的參數在函數體內部是只讀的,不能寫它,因為如果寫了,也就是污…