Sun公司对JavaBean的定义为:可以重复利用的软件组件,它在遵循JavaBean技术规范的基础上提供特定的功能,这些功能模块可以组成更大规模的应用系统。

到底什么是JavaBean?

先看一段代码:

/**
 * @author yong
 *
 */
public class Add {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c;

		c = a + b;
		System.out.println("a+b=" + c);
	}
}


上面的代码很简单,它的功能就是求出ab的和并且输出。

但是从软件工程的角度来看,上面的代码有一下几点不足:

可定制性差,如果现在要求其他的两个数相加那么就必须修改程序代码重新给ab赋值才能完成新的需求。

可维护性差,整段代码相互紧扣,如果得不到用户想要的结果那么就不得不从头到尾进行检查。类似于上面的代码还是很简单的,但是如果一个大型的系统写成上面那样,如果出了问题调试起来就非常费劲了。

复用性差,如果系统的不止一个地方需要用到上面代码的功能那么就不得不在整个代码中写两边几乎完全一样的代码。

上面的这些问题随着系统的增大而越发的明显,从而上面的代码的价值也会随着系统的增大而变得越来越小。

于是JavaBean技术出现了,简单的说JavaBean就是普通的java类,和其他的普通类的区别就在于在遵循JavaBean规范的前提下对一些功能进行封装,并对外界提供可以调用的方法接口,从而可以提高代码的复用性,而且如果程序出问题可以很容易的把错误定位在某个模块使程序的调试、开发的效率提高,同时也方便了合作开发,你一个Bean我一个Bean各不干扰。

改造后的代码:

/**
 * @author yong
 *
 */
public class AddBean {
	private int a;
	private int b;
	//求a,b两个数的和
	public int add(int a,int b){
		return a+b;
	}
	//打印a,b两个数的和
	public void print(){
		System.out.println("a+b="+(a+b));
	}
	//获取a的值
	public int getA(){
		return a;
	}
	//给a赋值
	public void setA(int a){
		this.a=a;
	}
	//获取b的值
	public int getB(){
		return b;
	}
	//给b赋值
	public void setB(int b){
		this.b=b;
	}
}


上面的这个类就是一个简单的JavaBean

如此看来JavaBeanvb6.0当中我们把相似的代码提出来构成一个过程的思路异曲同工,甚至可以说JavaBean和微软的com组件是一个作用的,都是封装代码然后供其他的代码调用,从而方便开发。

调用代码:

/**
 * @author yong
 *
 */
public class Test {
	public static void main(String[] args){
		//新建addbean对象
		AddBean add=new AddBean();
		//设置a,b的值
		add.setA(10);
		add.setB(20);
		//调用AddBean的方法打印a,b的和
		add.print();
	}
}


JavaBean的种类

JavaBean大体可以分两类:第一类是可视化的,第二类是非可视化的

可视化JavaBean就是就是带有界面的java类,如按钮,文本框等等类似于VB当中的控件。只不过一般情况下在java中我们没有像VB中那样对控件进行拖拖拽拽,但是有些IDE可以实现和VB类似的功能例如JBuilder或者eclipse里面的Swing/Matisse插件等。

非可视化的JavaBean就是没有界面的的java类,例如上面的那段实现ab求和并输出的类就是一个非可视化的JavaBean。这些JavaBean把功能进行封装方便其他的类的调用所以在web开发当中用到的JavaBean大多是非可视化的JavaBean。

JavaBean的编码规则

JavaBean的编码规范在sun公司的网站上可以下载到(官网下载的速度有限,现在已将文档上传到我的文档中,需要的童鞋可以去下载),100多页的英文PDF文档相当磨练人的耐心,在这里总结如下几条。

1、每个属性必须有对应的属性获取和设置方法,即每个属性必须要提供相对应的个gettersetter方法。

2、如果一个属性的类型为boolean类型,则属性对应的获取和设置方法就有所不同,例如某个boolean类型的属性名为isLuck那么相对应的属性获取方法为isLuck()属性设置方法为setLuck()。

3、所有属性最好是私有变量,即各个类的属性最好设置为private,对属性的取值和赋值操作要通过对应的取值赋值方法进行

4、所有的方法要设置为共有方法,即所有方法要设这为public

以上总结的几条就是编写非可视化JavaBean需要遵循的编码规范,只有这样别的开发者才能方便的调用JavaBean中提供的功能方法。

为什么属性都要设置成私有,方法都要设置成共有呢?

作者:beijiguangyong 发表于2012-2-24 23:11:27 原文链接
阅读:1006 评论:6 查看评论