Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

          迪米特法則(LoD):又稱最少知識原則(LKP),就是說一個對象應當對其他對象盡可能少的了解。


          狹義的迪米特法則:

          如果兩個類不必彼此直接通信,那么這兩個類就不應當發生直接的相互作用.如果其中一個類需要調用另一個類的方法的話,可以通過第三者轉發這個調用.

          缺點:

          會在系統內造出大量的小方法,散落在系統的各個角落.這些方法僅僅是傳遞間接的調用,因此系統與系統中的商業邏輯無關.當設計師試圖從一張類圖看出總體的構架時,這些小方法會造成迷惑和困擾.

          為了克服狹義迪米特法則的缺點,可以使用依賴倒轉原則,引入一個抽象的類型引用"抽象陌生人"對象,使"某人"依賴于"抽象陌生人",換言之,就是將"抽象陌生人"變成朋友.


          廣義的迪米特法則:

          一個模塊設計得好壞的一個重要的標志就是該模塊在多大的程度上將自己的內部數據與實現有關的細節隱藏起來.

          信息的隱藏非常重要的原因在于,它可以使各個子系統之間脫耦,從而允許它們獨立地被開發,優化,使用閱讀以及修改.

          迪米特法則的主要用意是控制信息的過載.在運用迪米特法則到系統的設計中時,要注意以下幾點:

          * 在類的劃分上,應當創建有弱耦合的類.類之間的耦合越弱,就越有利于復用.

          * 在類的結構設計上,每一個類都應當盡量降低成員的訪問權限.

          * 在類的設計上,只要可能,一個類應當設計成不變類.

          * 在對其他類的引用上,一個對象對其他對象的引用應降到最低.

          * 盡量限制局部變量的有效范圍.

          posted on 2009-12-10 14:16 seal 閱讀(575) 評論(0)  編輯  收藏 所屬分類: 設計模式
          主站蜘蛛池模板: 新巴尔虎左旗| 平和县| 北京市| 北海市| 滕州市| 科技| 浦北县| 定襄县| 宜兴市| 红原县| 调兵山市| 平阴县| 江安县| 咸阳市| 大关县| 沙坪坝区| 桓仁| 台南市| 乐亭县| 嘉义县| 区。| 盐亭县| 洞头县| 沛县| 迭部县| 灵台县| 兴文县| 梅河口市| 哈密市| 南阳市| 瓦房店市| 桑日县| 西乌珠穆沁旗| 吉林省| 沅陵县| 丹巴县| 科技| 汽车| 浙江省| 桦川县| 成武县|