設計模式6大原則 迪公尺特法則

2021-06-09 16:29:51 字數 1856 閱讀 5253

迪公尺特法則(law of emeter)

定義:乙個物件應該對其他物件了解最少

迪公尺特法則的核心觀念就是類間解耦,弱耦合,只有弱耦合了以後,類的復用性才可以提高。

形象一點的比喻類似於:監獄內的犯人是不應該跟外面的人接觸的,當然或許會有探親的。這裡的監獄就是類,裡面的犯人就是類內部的資訊,而監獄裡的獄警就相當於迪公尺特法則的執行者

舉個例子

家人探望犯人

家人:家人只與犯人是親人,但是不認識他的獄友

package

com.loulijun.chapter5;  

public

class

family   

}

犯人:犯人與家人是親人,犯人與獄友是朋友

package

com.loulijun.chapter5;  

public

class

prisoners   

}

獄友:犯人與獄友是朋友,但是不認識他的家人

package

com.loulijun.chapter5;  

//inmates是獄友的意思

public

class

inmates   

}

場景類:發生在監獄裡

package

com.loulijun.chapter5;  

public

class

prison   

}

執行結果:

家人說:你和獄友之間應該互相幫助... 

獄友說:我們是獄友...

看到這樣的結果,是不是有些彆扭,家人告訴犯人要與獄友好好相處,而獄友確冒出來說話。這顯然越界了,因為監獄只允許家人探望犯人,而不是隨便誰都可以見的

這裡的家人和獄友有了溝通是違背迪公尺特法則的,所以我們需要將家人和獄友隔離開,對其進行重構

家人

package

com.loulijun.chapter5;  

public

class

family   

}

犯人

package

com.loulijun.chapter5;  

public

class

prisoners   

}

獄友

package

com.loulijun.chapter5;  

//inmates是獄友的意思

public

class

inmates   

}

監獄

package

com.loulijun.chapter5;  

public

class

prison   

}

執行結果

家人說:犯人和獄友之間應該互相幫助... 

犯人說:我們是獄友...

這樣家人和獄友就分開了,但是也表達了家人希望獄友能跟犯人互相幫助的意願。也就是兩個類通過第三個類實現資訊傳遞

網上還有如下一些關於應用迪公尺特法則的注意事項:

① 在類的劃分上,應該建立有弱耦合的類;

② 在類的結構設計上,每乙個類都應當盡量降低成員的訪問許可權;

③ 在類的設計上,只要有可能,乙個類應當設計成不變類;

④ 在對其他類的引用上,乙個物件對其它物件的引用應當降到最低;

⑤ 盡量降低類的訪問許可權;

⑥ 謹慎使用序列化功能;

⑦ 不要暴露類成員,而應該提供相應的訪問器(屬性)。

設計模式六大原則 迪公尺特法則

背景 在學校學習時,可能因為某些事你得去其他二級學院的老師幫忙,大部分老師都是忙的 也許是的 很可能一件小事你要跑很多次。但是如果 你這件事直接找的是其他學院的院長,並且院長同意幫忙的話這件事解決起來就容易多了。不知怎地最近老是瞎想感覺這件事又能和設計模式中的迪公尺特法則 law of demete...

設計模式六大原則 迪公尺特法則

設計模式總覽 迪公尺特法則 law of demeter 又叫作最少知識原則 least knowledge principle 簡寫lkp 就是說乙個物件應當對其他物件有盡可能少的了解,不和陌生人說話。這樣就能有效降低耦合了。特點 1 只和 朋友 聯絡 2 就算是 朋友 也要少建立聯絡 用途 降耦...

設計模式 七大原則 迪公尺特法則

demeterprinciple 1.乙個物件應該對其他物件保持最少的了解 2.類與類關係越密切,耦合度越大 3.迪公尺特法則demeterprinciple又叫最少知道原則,即乙個類對自己依賴的類知道的越少越好 也就是說,對於被依賴的類不管多麼複雜,都盡量將邏輯封裝在類的內部 對外除了提供的pub...