Posted on 2005-11-14 17:02
canonical 閱讀(222)
評論(0) 編輯 收藏 所屬分類:
設計理論
對象本質上是一種命名技術,即將一組相關的數據和函數放在一起,起一個名字。從業務層面上看,我們需要識別出大量的概念,對應到建立的領域模型,我
們就擁有不同的業務對象。這些業務對象的類型各不相同,可以區分出來。從中間件層面上看,需要從大量業務對象中抽象出共性,并以統一的方式進行處理。即在
中間件層,所有業務對象的類型被弱化下來,實際上喪失了其各自的獨特性,即在中間件層看來,這些不同業務對象的類型是相同的。在中間件層的做法,一般是使
用reflection方法并結合少量全局性的接口。實際上是在結構層面上將對象作為Map來處理。這就象是應用科學與數學的關系。數學在抽象的層面上研
究結構之間的關系,每一個具體學科對相同的數學定理賦予不同的詮釋。
理論上,一個概念最好能夠自適應的在不同的抽象層面上表現為不同的結構,但
受限于當前的面向對象實現技術,實際采取的技術路線多半為建立唯一的強類型模型==>通過reflection得到弱類型結構。因為java
class作為元數據能夠承載的信息量有限,reflection方法可能并不能充分揭示對象的結構,所以一般還要額外補充xml說明文件等。
因為我個人主要的工作都作在中間件層,所以我的做法是盡量使用Map和List等抽象數據結構,結合元數據對象,在需要強類型的時候通過對象封裝來轉化為
強類型。即從弱類型==>強類型。
例如:
class Work{
public static final String KEY_NAME = "name";
public static final String KEY_DESCRIPTION = "description";
Map work;
public String getName(){
return (String)work.get(KEY_NAME);
}
public String getDescription(){
return (String)work.get(KEY_DESCRIPTION);
}
public void setName(String name){
work.put(KEY_NAME,name);
}
...
public Map toMap(){
return work;
}
}