前言
我們不只一次抱怨資訊系統中資料項目變化不定,無法設計和實現Java Beans。我們也不只一次作過這樣的事情:資料項目增加或減少了,我需要修改資訊系統以求適應。我們對付這種變化莫定的需求還有一招:天天催企業領導或業務人員決定資料項目,而不開始下面的設計和開發,還美名其為一個需求的"需求裡程碑"沒到,至少這個需求相關的設計和開發絕對不能開始。本文為這種情況提供了一種解決辦法,並美名其為"以動制動"。
JavaBean屬性
Java Beans 作為一種組件技術,其結構體系主要由屬性、方法和事件構成。象在其它物件導向技術中一樣,在Beans 中,屬性同樣起決定其目前狀態的作用。一個Bean的屬性的訪問和設定都必須通過存取方法和設定方法來進行。
下面我們先舉一個的樣本,然後對Beans 組件技術中的屬性支援進行解釋。
public class Author{
protected string name;
protected boolean married;
protected string[] books;
public string[] getBooks(){}
public void setBooks(integer[] x){}
public void setName(string n){}
public string getName(){}
public boolean isMarried(){}
public void setMarried(boolean bl){}
......
}
這是一個非常簡單的Bean,其中類的修飾符必須是public還有就是setXXX()/getXXX()方法必須遵循Beans內部的命名規則,因為Beans是根據這兩個方法來確定屬性的。其實,setXXX()/getXXX()方法是Beans的屬性機制的核心技術。
2.1 setXXX()/getXXX()方法
一個Bean屬性的定義完全取決於有無訪問者方法:設定器(setXXX())和擷取器(getXXX()),而與在類定義中有無顯示說明欄位毫無關係,即上例中刪去那些protected修飾的欄位與Bean毫無影響,因為Beans內部是根據有無存取方法來確定屬性的存在與否的。為了使Beans能確認一個屬性,其設定器(setXXX())和擷取器(getXXX())必須遵循下列命名規則:
一個屬性名稱在存取方法中必須以大寫字母開頭;
在其它地方以小寫字母開頭。
當然我們並不要求每個屬性都必須同時擁有這兩種訪問者,因為我們並不排除某個屬性只可讀或可寫。每種類型的屬性的設計必須遵循的規則叫這種屬性的設計範本,下面介紹各種類型屬性的設計範本。