Java設計模式之迪米特法則(俗稱:最少知識原則)

迪米特法則

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

模式與意義

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

迪米特法則的初衷在於降低類之間的耦合。由於每個類儘量減少對其他類的依賴,因此,很容易使得系統的功能模塊功能獨立,相互之間不存在(或很少有)依賴關係。

迪米特法則不希望類之間建立直接的聯繫。如果真的有需要建立聯繫,也希望能通過它的友元類來轉達。因此,應用迪米特法則有可能造成的一個後果就是:系統中存在大量的中介類,這些類之所以存在完全是為了傳遞類之間的相互調用關係——這在一定程度上增加了系統的複雜度。

有興趣可以研究一下設計模式的門面模式(Facade)和中介模式(Mediator),都是迪米特法則應用的例子。

摘自:大話設計模式

迪米特法則,如果兩個類不必彼此直接通向,那麼這兩個類就不應當發生直接的相互作用。如果其中一個類需要調用另一個累哦的某一個方法的話,可以通過第三者轉發這個調用。

迪米特法則首先強調的前提是在類的結構設計上,每一個類都應當降低成員的訪問權限,也就是說,一個類包裝好自己的private狀態,不需要讓別的類知道的字段或行為就不要公開。

面向對象的設計原則和麵向對象的三大特性本就不是矛盾的。迪米特法則其根本思想,是強調了類之間的松耦合。類之間的耦合越弱,越有利於複用,一個處在弱耦合的類被修改,不會對有關係的類造成搏擊,也就是說,信息的隱藏促進了軟件的複用。

原文鏈接:https://my.oschina.net/u/3568600/blog/1800111


分享到:


相關文章: