1. 数据模型

1.1 DTO (前后端传输对象)
DTO(Data Transfer Object)数据传输对象,这个传输通常指的前后端之间的传输(req)。
在后端,他的存在形式是 java 对象,在前端,他的存在形式通常是 js 里面的对象,这也是为什么把他画成横跨两层的原因。
1.2 VO (前端展示对象)
VO 就是展示用的数据,不管展示方式是网页,还是客户端,还是 APP,只要是这个东西是让人看到的,这就叫 VO
VO 主要的存在形式就是 js 里面的对象(也可以简单理解成 json)
VO 和 DTO 的区别
DTO 可能是这样的
1 | { |
因为是一个古风聊天室,也不能直接展示男,而且不需要精确的年龄, VO 是
1 | { |
DTO不应该出现与表现形式的耦合,DTO定义的是原始数据,VO再对DTO数据进行解释。这下VO和DTO用法就清晰很多了。
1.3 PO (数据持久对象)
简单说 PO 就是数据库中的记录,一个 PO 的数据结构对应着库中表的结构,表中的一条记录就是一个 PO 对象
对于 PO 来说,数量是相对固定的,一定不会超过数据库表的数量。
1.4 BO (业务对象)
BO 是一个业务对象,一类业务就会对应一个 BO。我们可以把BO看作是PO的组合。
PO-1是交易记录对象,PO-2是登录记录对象,PO-3是商品浏览记录对象,PO-4是添加购物车记录对象,PO-5是搜索记录对象,BO是个人网站行为对象,BO对象:{PO-1;PO-2;PO-3;PO-4;PO-5}。
这样做的优点不言而喻,维护代码的时候查看BO,就能知道这块逻辑涉及多少表(PO)。
BO 和 DTO 的区别
BO 对内,DTO 对外。
BO对象中的某些属性对象可能用不到或者不方便对外暴露,那么此时DTO只需要在BO的基础上,抽取自己需要的数据,然后对外提供。
1.5 建议
1,PO 这个没法省,不管叫 PO 还是 DAO,怎么着都得有。
2,一些工具类的系统和一些业务不是很复杂的系统 DTO 是可以和 BO 合并成一个,当业务扩展的时候注意拆分就行。
3,VO 是可以第一个优化掉的,展示业务不复杂的可以压根儿不要,直接用 DTO。