软件设计原则(六)迪米特法则 -Law of Demeter
LoD,Law of Demeter:
又稱最少知識原則(Least Knowledge Principle),一個對象應(yīng)該對其他對象有最少的了解
一個類對自己依賴的類知道的越少越好。也就是說,對于被依賴的類來說,無論邏輯多么復雜,都盡量地的將邏輯封裝在類的內(nèi)部,對外除了提供的public方法,不對外泄漏任何信息。
問題由來:
????????類與類之間的關(guān)系越密切,耦合度越大,當一個類發(fā)生改變時,對另一個類的影響也越大。
解決方案:
??????? 迪米特法則包含4層含義:
??????? 1)只和朋友交流
????????Only talk to your immediate friends.兩個對象之間的耦合就成為朋友關(guān)系。即,出現(xiàn)在成員變量、方法輸入輸出參數(shù)中的類就是朋友;局部變量不屬于朋友。
--> 不與無關(guān)的對象發(fā)生耦合!
????????方針:不要調(diào)用從另一個方法中返回的對象中的方法!只應(yīng)該調(diào)用以下方法:
- 該對象本身的方法
- 該對象中的任何組件的方法
- 方法參數(shù)中傳入的對象的方法
- 方法內(nèi)部實例化的對象的方法
????????例如:Teacher類可以命令TeamLeader對Students進行清點,則Teacher無需和Students耦合,只需和TeamLeader耦合即可。
反例:
????????2)朋友間也應(yīng)該有距離
????????即使是朋友類之間也不能無話不說,無所不知。
--> 一個類公開的public屬性或方法應(yīng)該盡可能少!
????????3)是自己的就是自己的
????????如果一個方法放在本類中也可以、放在其他類中也可以,怎么辦?
--> 如果一個方法放在本類中,既不增加類間關(guān)系,也對本類不產(chǎn)生負面影響,就放置在本類中。
??????? 4)謹慎使用Serializable
????????否則,若后來修改了屬性,序列化時會拋異常NotSerializableException。
建議:
????????迪米特法則的核心觀念是:類間解耦。
??????? 其結(jié)果是產(chǎn)生了大量中轉(zhuǎn)或跳轉(zhuǎn)類。總結(jié)
以上是生活随笔為你收集整理的软件设计原则(六)迪米特法则 -Law of Demeter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件设计原则(五)接口隔离原则 -Int
- 下一篇: 软件设计原则(七)合成/聚合复用原则(C