首页 > 编程语言 >Java编程规范-DO / BO / DTO / VO / AO的使用

Java编程规范-DO / BO / DTO / VO / AO的使用

时间:2024-12-26 21:30:18浏览次数:8  
标签:DO Object DTO String 对象 BO private

Java 开发 DO / BO / DTO / VO / AO 的作用

Java 开发中,DO(Data Object)BO(Business Object)DTO(Data Transfer Object)VO(View Object)AO(Application Object) 是常用的对象类型,每种类型都在特定的层次和场景中发挥不同的作用。以下是它们的定义和使用场景:


1. DO(Data Object,数据对象)

作用:

  • 直接与数据库中的表结构对应的对象,用来传递数据。
  • 通常是 DAO 层直接操作的对象。

特征:

  • 一般是持久化对象。
  • 每个属性通常映射到数据库表中的字段。

示例:

public class UserDO {
    private Long id;
    private String username;
    private String password;
    private Date createTime;
    // getter & setter
}

场景:

  • 作为持久层(DAO)的数据模型,与数据库打交道。

2. BO(Business Object,业务对象)

作用:

  • 封装业务逻辑的对象,用于 Service 层处理具体业务。
  • 可能会聚合多个 DO,也可能与 DTO 或其他对象结合。

特征:

  • 包含业务逻辑(方法),不仅是简单的属性数据。

示例:

public class UserBO {
    private Long id;
    private String username;
    private String displayName;

    // 业务逻辑方法
    public boolean isAccountActive() {
        // 判断账户是否活跃
        return true;
    }
    // getter & setter
}

场景:

  • 在业务层(Service)内传递数据、调用方法。

3. DTO(Data Transfer Object,数据传输对象)

作用:

  • 用于跨层传递数据,特别是远程调用或接口间传递时。
  • 主要用于减少一次传输的数据量。

特征:

  • 通常是用于接口的输入输出数据,包含需要传递的最小数据集合。
  • 不包含业务逻辑,只有字段和 getter/setter 方法。

示例:

public class UserDTO {
    private String username;
    private String email;
    // getter & setter
}

场景:

  • Controller 层调用 Service 层,或者 API 返回响应时使用。

4. VO(View Object,视图对象)

作用:

  • 用于前端展示的对象,通常和页面的字段一一对应。
  • 是 Controller 层到前端的专用对象。

特征:

  • 和界面密切相关,可能包含计算后的字段或格式化数据。
  • 只负责展示,不包含业务逻辑。

示例:

public class UserVO {
    private String username;
    private String displayName;
    private String formattedCreateTime;
    // getter & setter
}

场景:

  • Controller 层返回给前端的数据。

5. AO(Application Object,应用对象)

作用:

  • 表示接口层的请求数据,主要用于接收用户输入。
  • 和 DTO 类似,但更专注于应用层的参数封装。

特征:

  • 通常是接口的入参对象。

示例:

public class UserAO {
    private String username;
    private String password;
    // getter & setter
}

场景:

  • 接口调用时,用于接收客户端的输入数据。

总结对比表

类型 中文名称 作用 使用场景
DO 数据对象 数据库实体对象,与表结构对应 DAO 层与数据库直接交互
BO 业务对象 封装业务逻辑 Service 层处理具体业务逻辑
DTO 数据传输对象 数据传输时的对象,用于跨层或远程调用传递数据 Controller 层与 Service 层或 RPC API 交互
VO 视图对象 前端展示的数据对象,通常和界面字段对应 Controller 层返回前端的数据
AO 应用对象 接收接口请求参数的对象,用于封装输入 接口调用时接收客户端输入

类比总结

  • DO 像数据库里的“记录”。
  • BO 像商店里包装好的“商品”,有内容也有业务逻辑。
  • DTO 像传输数据时的“快递包裹”,装着数据要跨层或远程发送。
  • VO 像展示数据时的“商品展示模型”,让用户直接看到的数据。
  • AO 像填写快递时的“表单”,专门用来接收用户的输入。

每种对象类型关注的层次和职责不同,因此在项目中合理区分这些对象可以有效提高代码的可维护性和清晰度。

标签:DO,Object,DTO,String,对象,BO,private
From: https://www.cnblogs.com/aeolian/p/18629385

相关文章

  • 硬件开发笔记(三十二):TPS54331电源设计(五):原理图BOM表导出、元器件封装核对
    前言  一个12V转5V、3.3V和4V的电源电路设计好了,下一步导出BOM表,二次核对元器件型号封装,这是可以生产前的最后一步了。 导出BOM表步骤一:打开原理图  打开项目,双击点开原理图:   步骤二:报告-元器件列表        列宽一点,板子元器件种类规......
  • 【java毕设 python毕设 大数据毕设】基于springboot校园失物招领系统的设计与实现 适
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 【java毕设 python毕设 大数据毕设】基于springboot的小学生古诗词学习软件的设计与实
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • MARKDOWN笔记
    VSCode使用Markdown编写文档。MARKDOWNMarkdown是一种轻量级标记语言所有文本都可以用上Markdown!.mdTypora广泛用于写markdown的文本软件,可以将.md导出各种.pdf,.html,.word。Markdown基础语法:1,强调用于突出显示文本。斜体*斜体文本*或_斜体文本_粗体**粗体文本**......
  • 2024最新工具分享 | 24年最新AWVS/Acunetix Premium V24.8高级版漏洞扫描器(最新版)Wi
    前言AcunetixPremium是一种Web应用程序安全解决方案,用于管理多个网站、Web应用程序和API的安全。集成功能允许您自动化DevOps和问题管理基础架构。AcunetixPremium:全面的Web应用程序安全解决方案Web应用程序对于企业和组织与客户、合作伙伴和员工的联系至关......
  • 局域网文件传输\OCR\远程控制Free Download Manager
    FreeDownloadManagerFreeDownloadManager-從網路下載任何東西OCR名称平台说明下载STranslate......
  • Docker之dockerfile
    DockerFileDockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。创建Dockerfile文件viDockerfile具体内容如下:FROMopenjdk:8-jdk-alpineVOLUME/tmpADDlearn-docker-storage-1.0-SNAPSHOT.jarapp.jarEXPOSE8003ENTRYPOINT["......
  • 2024年最新国内可用的Docker镜像加速器地址汇总
    Docker镜像加速器列表资源收集于网络,如果侵犯了您的权益,请联系我删除相关信息。 状态地址✅https://docker.1panel.live✅https://hub.rat.dev✅https://docker.actima.top✅https://atomhub.openatom.cn✅https://docker......
  • 基于SpringBoot的“大学生社团活动平台”的设计与实现(源码+数据库+文档+PPT)
    基于SpringBoot的“大学生社团活动平台”的设计与实现(源码+数据库+文档+PPT)开发语言:Java数据库:MySQL技术:SpringBoot工具:IDEA/Ecilpse、Navicat、Maven系统展示系统结构图管理员登录界面图管理员功能界面图学生管理界面图社团申请信息管理界面图校......
  • 基于SpringBoot的“在线BLOG网”的设计与实现(源码+数据库+文档+PPT)
    基于SpringBoot的“在线BLOG网”的设计与实现(源码+数据库+文档+PPT)开发语言:Java数据库:MySQL技术:SpringBoot工具:IDEA/Ecilpse、Navicat、Maven系统展示在线BLOG网结构功能图管理员登录功能界面用户信息界面博客分类管理界面博客信息界面图库相册管......