JavaBean-一个“豆子”的故事

前言

初学java,看到各位大佬的学习资料,总会不断提到一个单词“JavaBean”,新手会一脸蒙蔽,这个究竟是个神马?

beans.jpeg

在说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对象

请关注我的订阅号

订阅号.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值