java 設計模式之迪公尺特法則

2021-07-10 02:47:58 字數 864 閱讀 9638

迪公尺特法則(law of demeter,lod)也稱為最少知識原則(least knowledge principle,lkp)

問題由來:類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類的影響也越大

乙個物件應該對其他物件有最少的了解。通俗地講,乙個類應該對自己需要耦合或呼叫的類知道得最少,你(被耦合或呼叫的類)的內部是如何複雜都和我沒關係,那是你的事情,我就知道你提供的public方法,我就呼叫這麼多,其他的一概不關心

含義:只和朋友交流 ,朋友類的定義是這樣的:出現在成員變數、方法的輸入輸出引數中的類稱為成員朋友類,而出現在方法體內部的類不屬於朋友類,意思是在乙個類中如果出現另乙個類,這個類可以定義為成員變數,或者通過形參傳遞過來,但是不能再方法體中,比如下面的**就不是按照迪迷特法則來的,'

public class teacher

groupleader.countgirls(listgirls);}}

方法是類的乙個行為,類竟然不知道自己的行為與其他類產生了依賴關係,這是不允許的

說明:因為teacher這個類中的方法commond()有業務邏輯在,而引入了girl這個類,這個就不符合迪公尺特法則了,它的業務邏輯應該直接放在groupleader中做,我們應該把

listlistgirls = new arraylist();

for (int i = 0; i < 20; i++)

這段**應該封裝在groupleader類中內部實現,

public class groupleader

public void countgirls() }

這樣改完後groupleader提供了countgirds()方法,而不需要關心裡面的實現,別人也沒法通過改動 把你這塊邏輯改掉,

設計模式之 迪公尺特法則

核心思想 降低類之間的耦合。來看乙個類之間耦合度很高的例項 public class demeter 學校員工 data class scholleemployee public intgetid 學校員工 data class collegeemployee public intgetid 管理學...

設計模式 迪公尺特法則

一,概述 迪公尺特法則 law of demeter 又叫作最少知識原則 least knowledge principle 簡寫lkp 就是說乙個物件應當對其他物件有盡可能少的了解,不和陌生人說話。英文簡寫為 lod 如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接相互作用。如果其中乙個類...

設計模式 迪公尺特法則

設計模式 迪公尺特法則 only talk to your immediate friends 只與直接的朋友通訊。即每個物件都有耦合關係,物件之間有耦合。定義老師類 public class teacher 然後進行查詢任務 groupleader.countgirls listgirls 然後定...