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

2021-10-05 08:57:28 字數 2304 閱讀 6522

簡介

迪公尺特法則又叫「最少知道原則」,即乙個類對自己依賴的類知道的越少越好(使他們之間有最低耦合度),對於依賴的類不管多複雜,都盡量把邏輯封裝在類內部,對外出了提供public方法,不洩露任何的資訊,最簡單的說就是:只與直接的朋友通訊

每個物件都會與其他的物件之間產生耦合關係,只要兩個物件之間存在耦合關係,我們就說他們是朋友;耦合有很多種方式,如:繼承、依賴、聚合、組合等。其中,我們稱出現在成員變數、方法引數、方法返回值(位置)中的類,這樣的類為直接朋友;而出現在區域性變數中的類不是直接朋友,即陌生的類最好不要以區域性變數的形式出現在類的內部。

例項分享

最初的**:

//客戶端

public

class

demeter1

}//學校總部員工類

class

employee

public string getid()

}//學院的員工類

class

collegeemployee

public string getid()

}//管理學院員工的管理類

class

collegemanager

return list;}}

//學校管理類

//分析 schoolmanager 類的直接朋友類有 employee(返回值)、collegemanager(方法引數)

//collegeemployee 不是 直接朋友 而是乙個陌生類,這樣違背了 迪公尺特法則

class

schoolmanager

return list;

}//該方法完成輸出學校總部和學院員工資訊(id)

void

printallemployee

(collegemanager collegemanager)

//獲取到學校總部員工

list

list2 =

this

.getallemployee()

; system.out.

println

("------------學校總部員工------------");

for(employee e : list2)

}}

這一版的不足:在schoolmanager中,collegeemployee類並不是schoolmanager類的直接朋友,按照迪公尺特法則,應該避免這種非直接朋友的耦合關係存在,下面進行改進。

改進後的**:

//客戶端

public

class

demeter1

}//學校總部員工類

class

employee

public string getid()

}//學院的員工類

class

collegeemployee

public string getid()

}//管理學院員工的管理類

class

collegemanager

return list;

}//輸出學院員工的資訊

public

void

printemployee()

}}//學校管理類

//分析 schoolmanager 類的直接朋友類有哪些 employee(返回結果)、collegemanager(引數)

//collegeemployee 不是 直接朋友 而是乙個陌生類,這樣違背了 迪公尺特法則(collegeemployee既不是成員變數,也不是返回值,還不是引數)

class

schoolmanager

return list;

}//該方法完成輸出學校總部和學院員工資訊(id)

void

printallemployee

(collegemanager collegemanager)

}}

小結

迪公尺特法則的核心:降低類之間的耦合度

ps:由於每個類都減少了不必要的依賴,故迪公尺特法則只是要求降低類間(物件間)耦合度,並不是要求完全沒有依賴關係。

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

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

七大設計原則之迪公尺特法則

定義 迪公尺特法則 law of demeter,lod 也稱為最少知識原則 least knowledge principle,lkp 乙個物件應該對其他物件有最少的了解。通俗地講,乙個類應該對自己需要耦合或呼叫的類知道得最少,它的內部是如何複雜都和自己沒關係,只需知道它提供的public方法,其...

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

迪公尺特法則 law of emeter 定義 乙個物件應該對其他物件了解最少 迪公尺特法則的核心觀念就是類間解耦,弱耦合,只有弱耦合了以後,類的復用性才可以提高。形象一點的比喻類似於 監獄內的犯人是不應該跟外面的人接觸的,當然或許會有探親的。這裡的監獄就是類,裡面的犯人就是類內部的資訊,而監獄裡的...