关于三层架构中的VO,DTO对象的使用说明

关于三层架构中的VO,DTO对象的使用说明

前言

看到网上很多资料,都在将VO和DTO之间微妙的关系,最近有个项目刚好用到很多VO和DTO之间的转换调用,于是就想将自己的经验和理解写下来,我会使用先分开理解,再说差异。

一、VO(View Object)

简单来说VO的生命周期就是,页面发给控制器我们可以使用实体的VO对象,控制器返回给页面也可以使用VO对象,即面向页面开发,页面需要什么我们就封装一个VO给它。

你们会问怎么做的好处是什么?

案例1:

我们返回的数据中包含时间参数,一般我们会做日期格式化。如果返回的是JSON对象,那么我们一般会直接在实体对象的日期属性上添加@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8"),如果有了VO,就会是这样处理,我们会把这个日期处理的注解,放到VO上,因为可能不同的业务对时间的格式要求不同,还有符合设计原则中的单一职责,符合单一原则会让你的代码结构清晰。

案例2:

我们在做前端提交的时候往往都需要做后端校验,这个时候如果我们使用的是@Validated注解,那么VO的价值就体现出来啦,我们不需要在实体Bean(Student)里面写一堆注解,实体Bean(Student)依然可以保持Pojo的标准,把校验注解写到StudentVO,实现了隔离原则
这个时候你会遇到一个问题,如果server层是实体Bean(Student),controller层是(StudentVO),要怎么转换能,如果你使用的是Spring框架,那么Spring已经为我们做好一切,提示:org.springframework.beans.BeanUtils,再提示:copyProperties()方法.

二、DTO(Data Transfer Object)

Controller层将VO对象转换为DTO对象传输给Service层,Service层通过DTO对象进行数据传输进行业务处理,然后返回DTO对象。

三、FO(Form Object)

页面表单提交的数据转换为FO对象,Controller转换为DTO对象传输给,Service层通过DTO对象进行数据传输进行业务处理,然后返回DTO对象,Controller转换为VO对象返回到页面。

总结

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值