JAVA名词系列

JavaBean

是一种JAVA语言写成的可重用组件,就是类按照一定的规范来写。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。
其他Java 类可以通过自身机制发现和操作这些JavaBean 的属性。

POJO (plain ordinary java object)

简单java对象 ,不是JavaBean, EntityBean 或者 SessionBean。POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB,JDBC等等。
不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。
POJO是一种概念或者接口,身份及作用随环境变化而变化。
一个POJO持久化以后就是PO。
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是VO

VO

即value object值对象
主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象。然后用一个VO对象在控制层与视图层进行传输交换。

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

经过处理后的PO,可能增加或者减少PO的属性,主要用于远程调用等需要大量传输对象的地方。
表现层与应用层之间是通过数据传输对象(DTO)进行交互的,而DTO是面向界面UI,是通过UI的需求来定义的.开发中需要维护DTO与Model之间的映射关系。

简单来说Model面向业务,我们是通过业务来定义Model的。而DTO是面向界面UI,是通过UI的需求来定义的。通过DTO我们实现了表现层与Model之间的解耦,
表现层不引用Model,如果开发过程中我们的模型改变了,而界面没变,我们就只需要改Model而不需要去改表现层中的东西。

DO(Domain Object)

领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

PO(Persistent Object)

持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库。
那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

VO与DTO的区别

既然DTO是展示层与服务层之间传递数据的对象,为什么还需要一个VO呢?对!对于绝大部分的应用场景来说,DTO和VO的属性值基本是一致的,
而且他们通常都是POJO,因此没必要多此一举,但不要忘记这是实现层面的思维,对于设计层面来说,概念上还是应该存在VO和DTO,
因为两者有着本质的区别,DTO代表服务层需要接收的数据和返回的数据,而VO代表展示层需要显示的数据。 
比如DTO中性别我们可以用0,1表示,而表现层可能要用男、女表示,这里VO和DTO的值就不一样。或者有人说VO里直接用男、女表示不就可以了,
但是如果不同的界面要求显示的值不一样,另一个页面要求显示帅哥、美女,如果直接在VO里用显示值就不妥了。回到设计层面上分析,
从职责单一原则来看,服务层只负责业务,与具体的表现形式无关,因此,它返回的DTO,不应该出现与表现形式的耦合。 

推荐参考文章:

http://blog.csdn.net/jack_cs/article/details/48373867
http://blog.csdn.net/zjrbiancheng/article/details/6253232
http://www.cnblogs.com/qixuejia/p/4390086.html

你可能感兴趣的:(JAVA)