迪公尺特法則

2021-10-07 04:23:31 字數 2671 閱讀 2823

迪公尺特法則

基本介紹:

乙個物件應該對其他物件保持最少的了解

類與類關係越密切,耦合度越大

迪公尺特法則又叫最少知道原則,即乙個類對自己依賴的類知道的越少越好。也就是說,對於被依賴的類不管多麼複雜,都盡量將邏輯封裝在類的內部,對外除了提供的public方法,不對外洩露任何資訊

迪公尺特法則還有簡單的定義:只與直接的朋友通訊

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

案例分析:

public

class

demeter1

}// 學校總部員工

class

employee

public string getid()

}// 學院員工

class

collegeemployee

public string getid()

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

// collegeemployee作為了返回值,因此是collegegmanager的朋友

class

collegemanager

return list;}}

// 學校管理類

// employee是schoolmanager的朋友

// collegemanager是schoolmanager的朋友,

// collegeemployee不是schoolmanager的朋友

// 因為他出現在protect的方法中他是乙個私有成員;

class

schoolmanager

return list;

// 依賴collegeemployee與collegemanager和employee

void

printallemployee

(collegemanager sub)

list

list_2 =

this

.getallemployee()

; system.out.

println

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

); for

(emplyee e : list_2)}}

}

**改進方案:

前面設計的問題在於schoolmanager中,collegeemployee類並不是schoolmanager類的直接朋友

按照迪公尺特法則,應該避免類種出現這樣非直接朋友關係的耦合

對**按照迪公尺特法則進行改進

改進後**:

public

class

demeter1

}// 學校總部員工

class

employee

public string getid()

}// 學院員工

class

collegeemployee

public string getid()

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

// collegeemployee作為了返回值,因此是collegegmanager的朋友

class

collegemanager

return list;

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

public

void

printemployee()

}}// 學校管理類

// employee是schoolmanager的朋友

// collegemanager是schoolmanager的朋友,

// collegeemployee不是schoolmanager的朋友

// 因為他出現在protect的方法中他是乙個私有成員;

class

schoolmanager

return list;

// 依賴collegeemployee與collegemanager和employee

void

printallemployee

(collegemanager sub)

*/// 此處使用了迪公尺特法則的改變

sub.

printemployee()

; list

list_2 =

this

.getallemployee()

; system.out.

println

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

); for

(emplyee e : list_2)}}

}

其實上述**做了很簡單的一件事,僅僅是將要出現collegeemployee的這段**放入了collegemanager中,保證了要依賴的類對依賴的類知道的越少越好原則;所以我們將他要依賴的類直接放入到collegemanager,collegemanager與collegeemployee是朋友關係,這樣就實現了迪公尺特法則;

如有疑問請及時諮詢.

迪公尺特法則

定義 乙個物件應該對其他物件保持最少的了解。問題由來 類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類的影響也越大。解決方案 盡量降低類與類之間的耦合。自從我們接觸程式設計開始,就知道了軟體程式設計的總的原則 低耦合,高內聚。無論是面向過程程式設計還是物件導向程式設計,只有使各個模...

迪公尺特法則

自從我們接觸程式設計開始,就知道了軟體程式設計的總的原則 低耦合,高內聚。無論是面向過程程式設計還是物件導向程式設計,只有使各個模組之間的耦合盡量的低,才能提高 的復用率。怎麼樣程式設計才能做到低耦合呢?那正是迪公尺特法則要去完成的。類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類...

迪公尺特法則

迪公尺特法則又稱為最少知識法則,即 如果兩個類不必彼此直接通訊,那麼這兩個類就不應該發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某乙個方法的話,可以通過第三方來 這個呼叫。迪公尺特法則特別強調的是類之間的松耦合,即在類的結構設計上,每乙個類都應該盡量降低成員的訪問許可權。我們在進行程式設計時...