前言
初学java,看到各位大佬的学习资料,总会不断提到一个单词“JavaBean”,新手会一脸蒙蔽,这个究竟是个神马?
类
在说JavaBean前,我们还是先说类吧,这个我相信大家都知道是什么!好吧,还是简单解释下吧.
什么是类?
百度词条的解释如下:
类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
还有种看起来更有意思的互相解释的描述:
类是一类对象的抽象
对象是类的一个实例
我们抛开概念,其实,其实在编程世界中,类(class)就是用来定义现实存在的这么一个东西.
打个比方
比如人类和你我的关系.
人类就是一个类.描述一群人的这么一个概念.
而你/我是个对象,只是“人”类中的这么一个个体.
java中,我们代码上是这么描述一个类的:
//示例定义“人类”
class Person{
private String name;
private int age;
public String getName(){
return name;
}
public String getAge(){
return age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
}
如上,我们定义了一个“人”类,这个人类有两个属性,一个是名字,另外一个是年龄.
什么是JavaBean?
理解了类的概念,那么,我们来理清,究竟什么是JavaBean!
我们先看专业的解释:
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去。所有遵循“一定编程原则”的Java类都可以被称作JavaBean。
由上概念,我们不难总结JavaBean的特点(或者叫遵循的编写规则):
- 这个类必须具有一个公共的(public)无参构造函数;
- 所有属性私有化(private);
- 私有化的属性必须通过public类型的方法(getter和setter)暴露给其他程序,并且方法的命名也必须遵循一定的命名规范.
- 这个类应是可序列化的.(比如可以实现Serializable 接口,用于实现bean的持久性)
这么一看,我们之前定义的“人”类就是一个JavaBean!
Java中常见的类
在Java开发中,经常会看到各种“POJO/PO/VO/BO/DTO”命名的类文件,这些其实都是类,
只不过根据他们的实际业务的使用场景后,做了细节区分.
POJO 简单无规则java对象(Plain Ordinary Java Object)
POJO是一个简单的、普通Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,
不具有任何特殊角色,不继承或不实现任何其它Java框架的类或接口。 可以包含类似与JavaBean属性和对属性访问的setter和getter方法的.
一个POJO持久化以后就是PO。直接用它传递、传递过程中就是DTO。直接用来对应表示层就是VO。
一句话总结: 没受任何限制的Java对象
PO 持久对象 (persistent object)
po(persistent object)就是在Object/Relation Mapping框架中的Entity,
po的每个属性基本上都对应数据库表里面的某个字段。
完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。
一句话总结: 用来与数据表对应的Java对象
VO 值对象(Value Object)
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。
但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要。
一句话总结: 用于业务的Java对象
VO 视图对象(View Object)
表现层对象(View Object),主要对应展示界面显示的数据对象,
用一个VO对象来封装整个界面展示所需要的对象数据
一句话总结: 展示界面的Java对象
BO 业务对象层的缩写(Business Object)
封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。具体可以看网上的一个例子:
比如一个简历,有教育经历、工作经历、社会关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。
一句话总结: 包含多个业务对象的Java对象
DTO 数据传输对象(Data Transfer Object)
就是接口之间传递的数据封装,DTO作用,一是能提高数据传输的速度(减少了传输字段),二能隐藏后端表结构。
类似与VO,用于页面展示时就是VO。
一句话总结: 用于数据传输的Java对象