依賴倒轉原則

          依賴倒轉原則?【 Dependency Inversion Principle(DIP)

          ??? ? 就是在我們編程的時候方法的參數類型,變量,對于其他具體類的依賴,我們盡量的使用抽象類。
          就是說盡量依賴于抽象,而不是依賴于實現。?
          ???
          ? 在書中兩種表述:
          ???? (1),Abstraction should not depend on details.details should depend on abstraction. (抽象不應當依賴于細節,細節應當依賴于抽象)。Abstraction就像是建筑物的基礎,而其實現類就是在基礎上面一層一層的往上面走。你拆掉最上面那層,和拿走最下面的基礎,有什么不同了,這就是差異了。所以Abstraction是要相當的穩定,是維護的重點。也正是因為穩定,所以我們盡量的依賴于Abstraction,既是穩定系統,也是靈活系統。?
          ???
          ? (2),Program to an Interface,not an implementation(要針對接口編程,不要針對實現編程)
          ???? 應當使用java接口和抽象java類進行變量的類型聲明,參數的類型聲明,方法返回值的類型和數據類型的轉換。?
          ???


          在這里我就有一個問題了。
          ???? List l= new Vector();而不要使用 Vector l=new Vector();我就有疑問 如果我一個類B 繼承于類A,B有一些A不存在的方法,而我的方法中我得使用B,這里那就菜了。
          ?? 所以看到這句話了。保證做到這點,一個具體的類應當只實現Java接口,和抽象java類中聲明過的方法,而不應當給出多余的方法。
          ??????
          ?? 依賴倒裝原則是很難實現的,在這些原則中,因為從上面也可以看到。還是使用了Vector類這個具體的類,還是對具體的類有依賴,所以,對于依賴倒裝的創建new Vector(),有一個專門的模式,工廠模式,不過只是把違反這個原則的地方壓縮到一個類里面。

          posted on 2009-07-02 22:59 luofeng225 閱讀(1160) 評論(3)  編輯  收藏 所屬分類: 設計模式

          評論

          # re: 依賴倒轉原則 2009-08-31 17:52 郭克

          如果滿足LSP原則就不會有你說的問題了。你覺得呢?

          里氏代換原則
            里氏代換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。
            里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。 LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。
            回復  更多評論   

          # re: 依賴倒轉原則 2010-05-17 13:34 翟云祥

          JAVA API中違反設計模式的地方也很多,所以對用戶的使用造成了麻煩,如果Vector類只想開放其個性的方法,完全可以把這些方法抽象成為一個接口,這樣不就實現了依賴倒轉原則了么。。。  回復  更多評論   

          # re: 依賴倒轉原則 2010-05-17 13:38 翟云祥

          還有就是可以根據聚合/合并原則,自己寫一個符合自己意圖的類,合理的使用繼承  回復  更多評論   

          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          公告

          我曾經聽到這么一個故事: 一個年輕的程序員問一個老程序員(一個比較牛逼的公司的CTO) 年輕程序員: 你為什么這么牛X., 就好像沒有你不會的。老程序員: 積累的。年輕程序員: 怎么才能積累到您的程度呢。我每天都在積累。但是似乎都沒有感覺到進步。老程序員: 我從20歲開始做到了一件事情,直到今天,而且盡可能地保證不間斷。年輕程序員: 到底是什么? 老程序員: 我每天保證自己有2個小時在學習新的東西。

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          收藏夾

          Java Website

          java技術博客

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 铜鼓县| 嘉兴市| 万盛区| 云和县| 萨嘎县| 嘉荫县| 阳信县| 武平县| 方城县| 平顶山市| 临武县| 旺苍县| 广丰县| 香港 | 安徽省| 敦煌市| 萨迦县| 金湖县| 峨山| 衡山县| 喀喇沁旗| 武陟县| 嘉峪关市| 孝义市| 咸宁市| 毕节市| 南皮县| 广德县| 阿图什市| 新乐市| 鸡西市| 山东省| 景德镇市| 博白县| 鹤峰县| 济宁市| 宜都市| 莱州市| 深州市| 彰化市| 独山县|