Sealyu

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

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

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


          狹義的迪米特法則:

          如果兩個類不必彼此直接通信,那么這兩個類就不應(yīng)當(dāng)發(fā)生直接的相互作用.如果其中一個類需要調(diào)用另一個類的方法的話,可以通過第三者轉(zhuǎn)發(fā)這個調(diào)用.

          缺點:

          會在系統(tǒng)內(nèi)造出大量的小方法,散落在系統(tǒng)的各個角落.這些方法僅僅是傳遞間接的調(diào)用,因此系統(tǒng)與系統(tǒng)中的商業(yè)邏輯無關(guān).當(dāng)設(shè)計師試圖從一張類圖看出總體的構(gòu)架時,這些小方法會造成迷惑和困擾.

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


          廣義的迪米特法則:

          一個模塊設(shè)計得好壞的一個重要的標志就是該模塊在多大的程度上將自己的內(nèi)部數(shù)據(jù)與實現(xiàn)有關(guān)的細節(jié)隱藏起來.

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

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

          * 在類的劃分上,應(yīng)當(dāng)創(chuàng)建有弱耦合的類.類之間的耦合越弱,就越有利于復(fù)用.

          * 在類的結(jié)構(gòu)設(shè)計上,每一個類都應(yīng)當(dāng)盡量降低成員的訪問權(quán)限.

          * 在類的設(shè)計上,只要可能,一個類應(yīng)當(dāng)設(shè)計成不變類.

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

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

          posted on 2009-12-10 14:16 seal 閱讀(582) 評論(0)  編輯  收藏 所屬分類: 設(shè)計模式
          主站蜘蛛池模板: 永城市| 博湖县| 南丰县| 奇台县| 梁平县| 石渠县| 辽宁省| 河北省| 信宜市| 朝阳县| 靖远县| 茌平县| 皋兰县| 竹北市| 龙门县| 六盘水市| 新安县| 嵩明县| 五常市| 丰城市| 夏津县| 修水县| 平顶山市| 韶山市| 淮滨县| 海宁市| 静海县| 泸定县| 凤翔县| 中山市| 克山县| 桑日县| 德阳市| 绥化市| 江门市| 布尔津县| 岳阳县| 大姚县| 左云县| 德兴市| 喜德县|