开发中DTO,VO的解释

刚入职,体验到企业级的开发,发现跟大学自己“玩”的代码不一样,代码有很多规范,也会有拧螺丝的体验。开发中会接触到PO,VO,DTO,BO,DAO,POJO的类命名。下面对VO,DTO看法.
先见图:
在这里插入图片描述

看着这图就比较复杂了,下面是我的简单看法,因为每个公司都有自己的规范或者要求,尽量多问问同事。
PO,BO,POJO等比较容易理解。如:
PO 持久对象,数据,可命名Entity;
BO 业务对象,封装对象、复杂对象 ,里面可能包含多个类;
主要是DTO和VO。在我开发的体验俗话说
DTO:一般是用来封装前端发送过来的数据的。(可能使用@Validated+BindingResult来绑定)

	@RequestMapping(value = "/index/refreshImg", method = RequestMethod.POST)
    @ResponseBody
    public returnResponse refreshOrderImg(@Validated @RequestBody OrderImgRefreshDto dto, BindingResult result){

VO:一般就是将要返回给前端的数据封装成对象再返回(restful规范要求下,我们多使用ResponseBody)
以上都可视为一种规范,编程是灵活的,看每个公司的要求。
有疑问可以看下评论或者评论提问哈

03-20
DTO(Data Transfer Object)VO(Value Object)都是软件开发中常用的概念,主要用于数据传递表示。 ### DTO (Data Transfer Object) DTO是一种设计模式,用于在应用程序的不同层之间传输数据。它的主要目的是减少网络通信次数,通过将多个相关的属性封装在一个对象里来进行一次性传输。DTO通常包含简单的getter/setter方法以及必要的字段,并且不包含业务逻辑。 **特点:** - 主要用于远程调用或跨服务的数据交换。 - 只是一个普通的Java Bean或其他语言对应的结构体形式存在。 - 减少了每次请求所需发送的消息数量。 ### VO (Value Object) VO则代表值对象,在领域驱动设计(DDD)中有特定含义,它强调不可变性相等性的比较基于内容而不是引用地址。此外,在更广泛的范围来看待VO,则可以认为它是用来展示给前端或者外部系统使用的模型实体,比如查询结果返回时会构造一些专门针对界面需求定制化的VO来满足视图渲染的需求。 两者区别在于使用场景及目的有所不同: | **对比项** | **DTO** | **VO** | |------------|-------------------------------|------------------------------------| | 定义 | 数据传输对象 | 值对象 / 视图对象 | | 目标用途 | 层间、模块间的大量数据携带 | 面向用户端显示 | | 不变量约束 | 没有强制 | 强调不变 | #### 示例代码片段: ```java // DTO Example public class UserDTO { private String name; private int age; // Getters and Setters... } // VO Example public final class AddressVO implements Serializable{ private final String city; private final String street; public AddressVO(String city, String street){ this.city = city; this.street = street; } @Override public boolean equals(Object o){...} @Override public int hashCode(){...} } ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值