四、面向對象 對象擴展與成長

 

 


 前面的繼承是類的擴展方式,類在java中是類對象,這裏我們最好就把類叫做對象的定義,或者是說描述
這篇文章說的擴展,不是類的擴展,而是對象的擴展。對象是計算環境的搭建者和參與者,對象適應環境變化的能力表現在對象的擴展性和成長性上。

一、讓對象依賴於抽象
話說,DOTA中的劍聖1萬年前是個書生,不會武功,劍聖的衆多絕招都是後來學的。

//人 類
class ren {
      List<wugong>  wugongliebiao ;//武功列表
      List<wenzi>   wenziliebiao;//認識的文字列
      public boolean xuexiWugong(wugong w){   //學習武功
               wugongliebiao.add(w)
      }
     public boolean xuexiWenzi(wenzi w){   //學習文字
               wugongliebiao.add(w)
      }
}
無敵斬

class wudizhan implements wugong{

}

 

劍刃風暴

class jianrenfengbao implements wugong{

}

 

ren  js = new ren();//劍聖出生,什麼都不會

js.xuexiWugong(new wudizhan));  //學無敵斬 

js.xuexiWugong(new jianrenfengbao);//學劍刃風暴

 

一個人,在一個環境中總是依靠環境中其他的事物成長,這種有助於成長的擴展性,我們用依賴於抽象進行。好比,只要是武功,劍聖就能學

 

二、多多考慮組合,對象的屬性都是抽象

劍聖出生是沒有穿衣服的,在他活着的1萬年間,他穿過很多的衣服,衣服能增加他的防禦力

class ren(){
      ...

      Yifu  yifu;
      setYifu(Yifu f){
              this.yifu = f;
      }
      public Integer getFangyuli(){
            return yifu.fangyuli
      } 
}

Interface  Yifu {
      public Integer getFangyuli();
}

class  longmenkaijia implements Yifu{  //龍門鎧甲
         private fangyuli = 10000;
         public Integer getFangyuli(){
            return fangyuli  ;
      }
}
ren  js = new ren();
js.setYifu(new longmenkaijia());

君子擅甲於物也!


三、能擴展自己的同時,也要識擡舉,懂得被別人欣賞和包裝

劍聖到現在還不是英雄,暴雪要給他加上英雄的光環,劍聖喜壞了

class yingxiong extends ren{
       Guanghuan  gh;  //光環
       ren     r;
       public yingxiong(ren r){
            this.ren = r;
            gh = new Guanghuan_x();
       }
}
js = new  yingxiong(js) ;js成了英雄,有了x光環。


 地球上的物質和聯繫組成了完整的地球生態,人和人之間的聯繫組成了社會形態,相對來說社會形態比計算環境更爲複雜,我們系統中的對象也沒有人這麼靈活,如何讓對象更具鮮活性,讓我們的計算環境具備文化風景,是我們程序員永久的主題,也是源於生活的智慧!

發佈了52 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章