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 查看評論