定義:
迪公尺特法則(law of demeter,lod)也稱為最少知識原則(least knowledge principle,lkp)。
乙個物件應該對其他物件有最少的了解。通俗地講,乙個類應該對自己需要耦合或呼叫的類知道得最少,你(被耦合或呼叫的類)的內部是如何複雜都和我沒關係,那是你的事情,我就知道你提供的public方法,我就呼叫這麼多,其他的一概不關心。
含義:
朋友類的定義是這樣的:出現在成員變數、方法的輸入輸出引數中的類稱為成員朋友類,而出現在方法體內部的類不屬於朋友類。
下面的**在方法體內部依賴了其他類,這嚴重違反迪公尺特法則
1
2
3
4
5
6
7
8
9
10
11
12
13
public
class
teacher
groupleader.countgirls(listgirls);
}
}
方法是類的乙個行為,類竟然不知道自己的行為與其他類產生了依賴關係,這是不允許的。
正確的做法是:
1
2
3
4
5
6
7
public
class
teacher
}
12
3
4
5
6
7
8
9
10
11
12
13
public
class
groupleader
public
void
countgirls()
}
注意:乙個類只和朋友交流,不與陌生類交流,不要出現geta().getb().getc().getd()這種情況(在一種極端情況下允許出現這種訪問,即每乙個點號後面的返回型別都相同),類與類之間的關係是建立在類間的,而不是方法間,因此乙個方法盡量不引入乙個類中不存在的物件,當然,jdk api提供的類除外。
乙個類公開的public屬性或方法越多,修改時涉及的面也就越大,變更引起的風險擴散也就越大。因此,為了保持朋友類間的距離,在設計時需要反覆衡量:是否還可以再減少public方法和屬性,是否可以修改為private、package-private(包型別,在類、方法、變數前不加訪問許可權,則預設為包型別)、protected等訪問許可權,是否可以加上final關鍵字等。
注意:迪公尺特法則要求類「羞澀」一點,盡量不要對外公布太多的public方法和非靜態的public變數,盡量內斂,多使用private、package-private、protected等訪問許可權。
如果乙個方法放在本類中,既不增加類間關係,也對本類不產生負面影響,就放置在本類中。
最後,迪公尺特法則的核心觀念就是類間解耦,弱耦合,只有弱耦合了以後,類的復用率才可以提高。
**:
設計模式六大原則 迪公尺特法則
背景 在學校學習時,可能因為某些事你得去其他二級學院的老師幫忙,大部分老師都是忙的 也許是的 很可能一件小事你要跑很多次。但是如果 你這件事直接找的是其他學院的院長,並且院長同意幫忙的話這件事解決起來就容易多了。不知怎地最近老是瞎想感覺這件事又能和設計模式中的迪公尺特法則 law of demete...
設計模式六大原則 迪公尺特法則
設計模式總覽 迪公尺特法則 law of demeter 又叫作最少知識原則 least knowledge principle 簡寫lkp 就是說乙個物件應當對其他物件有盡可能少的了解,不和陌生人說話。這樣就能有效降低耦合了。特點 1 只和 朋友 聯絡 2 就算是 朋友 也要少建立聯絡 用途 降耦...
設計模式六大原則 迪公尺特法則
目錄 設計模式六大原則 單一職責原則 設計模式六大原則 介面隔離原則 設計模式六大原則 依賴倒置原則 設計模式六大原則 黎克特制替換原則 設計模式六大原則 迪公尺特法則 設計模式六大原則 開閉原則 迪公尺特法則 lod 也叫最少知識原則。迪公尺特法則的定義是只與你的直接朋友交談,不與 陌生人 說話。...