posts - 176, comments - 240, trackbacks - 0, articles - 7

          [導入]搖擺于強類型與弱類型之間的對象

          Posted on 2005-11-14 17:02 canonical 閱讀(224) 評論(0)  編輯  收藏 所屬分類: 設計理論

          對象本質(zhì)上是一種命名技術,即將一組相關的數(shù)據(jù)和函數(shù)放在一起,起一個名字。從業(yè)務層面上看,我們需要識別出大量的概念,對應到建立的領域模型,我 們就擁有不同的業(yè)務對象。這些業(yè)務對象的類型各不相同,可以區(qū)分出來。從中間件層面上看,需要從大量業(yè)務對象中抽象出共性,并以統(tǒng)一的方式進行處理。即在 中間件層,所有業(yè)務對象的類型被弱化下來,實際上喪失了其各自的獨特性,即在中間件層看來,這些不同業(yè)務對象的類型是相同的。在中間件層的做法,一般是使 用reflection方法并結合少量全局性的接口。實際上是在結構層面上將對象作為Map來處理。這就象是應用科學與數(shù)學的關系。數(shù)學在抽象的層面上研 究結構之間的關系,每一個具體學科對相同的數(shù)學定理賦予不同的詮釋。
           理論上,一個概念最好能夠自適應的在不同的抽象層面上表現(xiàn)為不同的結構,但 受限于當前的面向?qū)ο髮崿F(xiàn)技術,實際采取的技術路線多半為建立唯一的強類型模型==>通過reflection得到弱類型結構。因為java class作為元數(shù)據(jù)能夠承載的信息量有限,reflection方法可能并不能充分揭示對象的結構,所以一般還要額外補充xml說明文件等。 因為我個人主要的工作都作在中間件層,所以我的做法是盡量使用Map和List等抽象數(shù)據(jù)結構,結合元數(shù)據(jù)對象,在需要強類型的時候通過對象封裝來轉化為 強類型。即從弱類型==>強類型。
          例如:
          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;
           }
          }

          主站蜘蛛池模板: 深州市| 新源县| 铁岭县| 西城区| 青海省| 梁平县| 偏关县| 阳曲县| 灵台县| 寿光市| 连山| 固原市| 福海县| 潢川县| 乌拉特后旗| 临江市| 寿阳县| 张掖市| 六安市| 古交市| 新田县| 象州县| 新巴尔虎右旗| 香河县| 铜鼓县| 札达县| 沁源县| 明光市| 都江堰市| 体育| 梁山县| 封丘县| 重庆市| 北京市| 娱乐| 布尔津县| 固安县| 通江县| 新田县| 扬中市| 方城县|