Sun公司對(duì)JavaBean的定義為:可以重復(fù)利用的軟件組件,它在遵循JavaBean技術(shù)規(guī)范的基礎(chǔ)上提供特定的功能,這些功能模塊可以組成更大規(guī)模的應(yīng)用系統(tǒng)。

到底什么是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);
	}
}


上面的代碼很簡(jiǎn)單,它的功能就是求出ab的和并且輸出。

但是從軟件工程的角度來看,上面的代碼有一下幾點(diǎn)不足:

可定制性差,如果現(xiàn)在要求其他的兩個(gè)數(shù)相加那么就必須修改程序代碼重新給ab賦值才能完成新的需求。

可維護(hù)性差,整段代碼相互緊扣,如果得不到用戶想要的結(jié)果那么就不得不從頭到尾進(jìn)行檢查。類似于上面的代碼還是很簡(jiǎn)單的,但是如果一個(gè)大型的系統(tǒng)寫成上面那樣,如果出了問題調(diào)試起來就非常費(fèi)勁了。

復(fù)用性差,如果系統(tǒng)的不止一個(gè)地方需要用到上面代碼的功能那么就不得不在整個(gè)代碼中寫兩邊幾乎完全一樣的代碼。

上面的這些問題隨著系統(tǒng)的增大而越發(fā)的明顯,從而上面的代碼的價(jià)值也會(huì)隨著系統(tǒng)的增大而變得越來越小。

于是JavaBean技術(shù)出現(xiàn)了,簡(jiǎn)單的說JavaBean就是普通的java類,和其他的普通類的區(qū)別就在于在遵循JavaBean規(guī)范的前提下對(duì)一些功能進(jìn)行封裝,并對(duì)外界提供可以調(diào)用的方法接口,從而可以提高代碼的復(fù)用性,而且如果程序出問題可以很容易的把錯(cuò)誤定位在某個(gè)模塊使程序的調(diào)試、開發(fā)的效率提高,同時(shí)也方便了合作開發(fā),你一個(gè)Bean我一個(gè)Bean各不干擾。

改造后的代碼:

/**
 * @author yong
 *
 */
public class AddBean {
	private int a;
	private int b;
	//求a,b兩個(gè)數(shù)的和
	public int add(int a,int b){
		return a+b;
	}
	//打印a,b兩個(gè)數(shù)的和
	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;
	}
}


上面的這個(gè)類就是一個(gè)簡(jiǎn)單的JavaBean

如此看來JavaBeanvb6.0當(dāng)中我們把相似的代碼提出來構(gòu)成一個(gè)過程的思路異曲同工,甚至可以說JavaBean和微軟的com組件是一個(gè)作用的,都是封裝代碼然后供其他的代碼調(diào)用,從而方便開發(fā)。

調(diào)用代碼:

/**
 * @author yong
 *
 */
public class Test {
	public static void main(String[] args){
		//新建addbean對(duì)象
		AddBean add=new AddBean();
		//設(shè)置a,b的值
		add.setA(10);
		add.setB(20);
		//調(diào)用AddBean的方法打印a,b的和
		add.print();
	}
}


JavaBean的種類

JavaBean大體可以分兩類:第一類是可視化的,第二類是非可視化的

可視化JavaBean就是就是帶有界面的java類,如按鈕,文本框等等類似于VB當(dāng)中的控件。只不過一般情況下在java中我們沒有像VB中那樣對(duì)控件進(jìn)行拖拖拽拽,但是有些IDE可以實(shí)現(xiàn)和VB類似的功能例如JBuilder或者eclipse里面的Swing/Matisse插件等。

非可視化的JavaBean就是沒有界面的的java類,例如上面的那段實(shí)現(xiàn)ab求和并輸出的類就是一個(gè)非可視化的JavaBean。這些JavaBean把功能進(jìn)行封裝方便其他的類的調(diào)用所以在web開發(fā)當(dāng)中用到的JavaBean大多是非可視化的JavaBean。

JavaBean的編碼規(guī)則

JavaBean的編碼規(guī)范在sun公司的網(wǎng)站上可以下載到(官網(wǎng)下載的速度有限,現(xiàn)在已將文檔上傳到我的文檔中,需要的童鞋可以去下載),100多頁(yè)的英文PDF文檔相當(dāng)磨練人的耐心,在這里總結(jié)如下幾條。

1、每個(gè)屬性必須有對(duì)應(yīng)的屬性獲取和設(shè)置方法,即每個(gè)屬性必須要提供相對(duì)應(yīng)的個(gè)gettersetter方法。

2、如果一個(gè)屬性的類型為boolean類型,則屬性對(duì)應(yīng)的獲取和設(shè)置方法就有所不同,例如某個(gè)boolean類型的屬性名為isLuck那么相對(duì)應(yīng)的屬性獲取方法為isLuck()屬性設(shè)置方法為setLuck()。

3、所有屬性最好是私有變量,即各個(gè)類的屬性最好設(shè)置為private,對(duì)屬性的取值和賦值操作要通過對(duì)應(yīng)的取值賦值方法進(jìn)行

4、所有的方法要設(shè)置為共有方法,即所有方法要設(shè)這為public

以上總結(jié)的幾條就是編寫非可視化JavaBean需要遵循的編碼規(guī)范,只有這樣別的開發(fā)者才能方便的調(diào)用JavaBean中提供的功能方法。

為什么屬性都要設(shè)置成私有,方法都要設(shè)置成共有呢?

作者:beijiguangyong 發(fā)表于2012-2-24 23:11:27 原文鏈接
閱讀:1006 評(píng)論:6 查看評(píng)論