迪迷特法則

迪米特法則是軟體設計原則,又叫最少知識原則,1987年秋天由美國Northeastern University的Ian Holland提出,被UML的創始者之一Booch等普及。

基本介紹

  • 中文名:迪迷特法則
  • 外文名:Law of Demeter
法則定義,迪迷特法則的由來,模式與意義,什麼是迪迷特法則,迪迷特的特點,相關描述,狹義的迪米特法則的缺點:,廣義的迪米特法則在類的設計上的體現:,

法則定義

迪米特法則(LawofDemeter)又叫作最少知識原則(LeastKnowledgePrinciple簡寫LKP),就是說一個對象應當對其他對象有儘可能少的了解,不和陌生人說話。英文簡寫為:LoD.

迪迷特法則的由來

LoD[LawofDemeter]迪迷特法則軟體設計原則。迪米特法則(LawofDemeter,LoD)又叫最少知識原則(LeastKnowledgePrinciple,LKP)。1987年秋天由美國NortheasternUniversity的IanHolland提出,被UML的創始者之一Booch等普及。後來,因為在經典著作《ThePragmaticProgrammer》而廣為人知。
值得一提的是,雖然IanHolland對計算機科學的貢獻也僅限於這一條法則,其他方面的建樹不多,但是,這一法則卻不僅僅局限於計算機領域,在其他領域也同樣適用。比如,美國人就在航天系統的設計中採用這一法則。

模式與意義

迪米特法則可以簡單說成:talkonlytoyourimmediatefriends。對於面向OOD來說,又被解釋為下面幾種方式:一個軟體實體應當儘可能少的與其他實體發生相互作用。每一個軟體單位對其他的單位都只有最少的知識,而且局限於那些與本單位密切相關的軟體單位。
迪米特法則的初衷在於降低類之間的耦合。由於每個類儘量減少對其他類的依賴,因此,很容易使得系統的功能模組功能獨立,相互之間不存在(或很少有)依賴關係。
迪米特法則不希望類直接建立直接的接觸。如果真的有需要建立聯繫,也希望能通過它的友元類來轉達。因此,套用迪米特法則有可能造成的一個後果就是:系統中存在大量的中介類,這些類之所以存在完全是為了傳遞類之間的相互調用關係——這在一定程度上增加了系統的複雜度。
有興趣可以研究一下設計模式的門面模式(Facade)和中介模式(Mediator),都是迪米特法則套用的例子。
值得一提的是,雖然IanHolland對計算機科學的貢獻也僅限於這一條法則,其他方面的建樹不多,但是,這一法則卻不僅僅局限於計算機領域,在其他領域也同樣適用。比如,美國人就在航天系統的設計中採用這一法則。

什麼是迪迷特法則

迪米特法則可以簡單說成:talkonlytoyourimmediatefriends。對於面向OOD來說,又被解釋為下面幾種方式:
一個軟體實體應當儘可能少的與其他實體發生相互作用。
每一個軟體單位對其他的單位都只有最少的知識,而且局限於那些與本單位密切相關的軟體單位。

迪迷特的特點

迪米特法則的初衷在於降低類之間的耦合。由於每個類儘量減少對其他類的依賴,因此,很容易使得系統的功能模組功能獨立,相互之間不存在(或很少有)依賴關係。
迪米特法則不希望類直接建立直接的接觸。如果真的有需要建立聯繫,也希望能通過它的友元類來轉達。因此,套用迪米特法則有可能造成的一個後果就是:系統中存在大量的中介類,這些類之所以存在完全是為了傳遞類之間的相互調用關係——這在一定程度上增加了系統的複雜度。
有興趣可以研究一下設計模式的門面模式(Facade)和中介模式(Mediator),都是迪米特法則套用的例子。

相關描述

狹義的迪米特法則的缺點: 在系統里造出大量的小方法,這些方法僅僅是傳遞間接的調用,與系統的商務邏輯無關。

狹義的迪米特法則的缺點:

遵循類之間的迪米特法則會是一個系統的局部設計簡化,因為每一個局部都不會和遠距離的對象有直接的關聯。但是,這也會造成系統的不同模組之間的通信效率降低,也會使系統的不同模組之間不容易協調。
門面模式和調停者模式實際上就是迪米特法則的套用。
廣義的迪米特法則在類的設計上的體現: 優先考慮將一個類設定成不變類。

廣義的迪米特法則在類的設計上的體現:

儘量降低一個類的訪問許可權。
謹慎使用Serializable。
儘量降低成員的訪問許可權。

相關詞條

熱門詞條

聯絡我們