<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    test html
    隨筆-10  評論-6  文章-0  trackbacks-0
    《JAVA與模式》這本書,一年前就買了,但說真的,當時真的是只看得懂字,看不明白道理!
    所以當有空時我就又拿出來翻翻,這次對于第3章的軟件可維護性與可復用性,特別有感觸!

    我也不想拋很多技術名詞出來(開-閉 原則之類的),親身經歷告訴我,如果看的人不是自己明白其中的道理,那他看多了這種名詞,就習慣的把他當口頭語來用了,已經明白的人,自然有比我更高的認識。

    所以我選擇一種比較“俗”的方式,說出我的體會。(因為我就是一俗人)

    還是回到接口上來吧,什么時候接口才能起作用?當你需要處理將來不斷變化的需要時!

    有這么一個場景:

    某導演要拍個大片,然后開會時他對助手說出要找女一號,并對女一號要求如下:

    1。全國知名女性;
    2。有絕世容貌;
    3。身材一流;

    好了先說這3個吧。

    助手根據要求去找來 某某女明星A,但助手知道,導演老人家不會一看就看中的,所以準備聯系了女明星B,女明星C.

    果然,導演開始覺得女明星A還不錯,但是沒過2天,覺得要換,(演藝圈的事誰說得清呢),這時助手馬上有B,C來代替!

    助手的工作應變十分的好,導演大大的有賞!

    現在我們來簡單分析下:

    把導演對女明星的要求作為接口的定義。
    該接口是三個特征的集合:

    1。全國知名女性;
    2。有絕市容貌;
    3。身材一流;

    導演只是根據符合這3個特征要人,而助手根據這3個特征去找人,顯然女明星 A,B,C 必須同時符合這3個特征,(也就是實現了這個接口)

    導演在不滿意  女明星 A 后,能迅速找到 B ,C 做替換,助手自然是功不可沒,但根本原因,是因為導演的要求是放在 特征的集合 上.

    試想如果導演當初是指名到姓的要誰誰做女一號,然后找來又不滿意了,要求這么具體,助手哪能那么快找來其他人代替?

    下面開始要拋點名詞了,我把這里導演的先見之明叫做 “依賴抽象”!

    public interface  女一號{

        public void 全國知明女性();
        public void 有絕世容貌();
        public void 身材一流();

    }

    public class 女明星A implements 女一號{

        public void 全國知明女性(){
         張某某;
        }
        public void 有絕世容貌(){
        貌似天仙;
        }
        public void 身材一流(){
        三圍(75c,38,80)
        }
    public class 女明星B implements 女一號{

        public void 全國知明女性(){
         某某姐姐;
        }
        public void 有絕世容貌(){
        嚇死路邊一頭牛;
        }
        public void 身材一流(){
        三圍(80d,45,95);
        }

    public class 女明星C implements 女一號{

        public void 全國知明女性(){
         某某神仙;
        }
        public void 有絕世容貌(){
         人見人愛;
        }
        public void 身材一流(){
        三圍(70c,35,80);
        }
    }






    posted on 2007-05-01 12:17 我們走在JAVA的光明大道上 閱讀(538) 評論(2)  編輯  收藏 所屬分類: 接口的藝術

    評論:
    # re: 對面向接口編程的體會(2) 2007-05-02 14:44 | Qin Zhimou
    很好!!!
      回復  更多評論
      
    # re: 對面向接口編程的體會(2) 2007-05-03 22:03 | 擴展標記
    對于接口我其實也不知道它那些具體的實現細節,但我知道它的目的,而且我覺得好象我也只想也只需知道它的目的,我就簡單說吧,
    這不得不先從面向對象的一個重要特性多態說起,簡單說多態的目的就是為能用一個統一的接口去實現(驅動)不同的實現(各個實現這個接口的類的處理函數,這個處理函數就是接口里聲明但沒給出具體代碼的那個函數,即名稱一樣),就好象用一個標準的三角插座就可給任何電器供電一樣。
    假設我們定義一個接口“供電系統”,“供電系統”里聲明了一個方法“三角插座()”,那么實現這個接口(可理解為遵循此接口協議,就好象各電器廠商都遵守國際插座標準尺寸一樣)的各種類(各類電器)就可以都只用這種統一化的"三角插座()"就行了。往后當我們設計到一個想用電的類時,就可直接去接(調用)這個三角插座(),而且要注意的是任何實現(遵循)此接口的類都可以調用相同的“三角插座()”這個接口。
    說到此你可能覺得這個道理其實你也明白,主要是不明白于為什么java要那么做?這還得從人類這個東西說起,要知道這世界是以人類為主的,當然什么事都要以人為本了,人類是惰性的動物,什么都圖方便,發明多態也是,你先別管它那些污七八糟的概念,其目的就是為模仿現實生活的,簡單說就是標準化,說穿了也還是為了方便,總之我們生活處處是標準,目的也就想處處方便。回到編程領域也是,多態就是為達到用一個統一的動作(如相同的接口名)來達到驅動多種機器的目的,就好象一個標準的三角插座就可驅動所有遵守此插座協議的電器一樣,這就是目的,那么回到手段就是編譯器的事了,java采用了獨立化的接口的方式(注:有些語言并沒有突出接口的概念,比如c++的抽象也可以實現同樣功能),這也不過是java實現以上目的的手段而已,你別追究它為什么這樣,這是它的方式,你就管記住那段幾乎是固定化的實現接口的代碼塊。
    重申一次:弄清它的目的,別管它用什么手段,把它背下來得了。
      回復  更多評論
      
    test html.....
    主站蜘蛛池模板: 精品国产免费观看久久久| 毛片基地免费视频a| 亚洲精品第一国产综合精品99| 亚洲人成激情在线播放| 免费国产在线观看老王影院| 亚洲一区二区三区免费视频| 玖玖在线免费视频| 亚洲女人被黑人巨大进入| 国产精品亚洲小说专区| 国产精品成人四虎免费视频| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲人成色77777在线观看| 在人线av无码免费高潮喷水| 国产亚洲sss在线播放| 好男人看视频免费2019中文 | 青柠影视在线观看免费| 亚洲国产精品无码专区| 久久这里只精品99re免费| 亚洲网站在线免费观看| 无码日韩人妻av一区免费| 亚洲av永久中文无码精品综合| 免费大片在线观看网站| 久久久久国色AV免费观看| 亚洲福利在线视频| 成年女人视频网站免费m| 无码 免费 国产在线观看91| 亚洲精品乱码久久久久久 | 精品韩国亚洲av无码不卡区| 亚洲女人被黑人巨大进入| 99精品视频在线观看免费专区| 亚洲中文字幕人成乱码| 亚洲第一成人影院| 久久一区二区三区免费播放| 亚洲精品一二三区| 99精品视频免费观看| 亚洲一级毛片免费在线观看| 全黄性性激高免费视频| 男人j进入女人j内部免费网站| 国产亚洲精aa在线看| 日韩亚洲变态另类中文| 免费看黄视频网站|