迪米特法則的定義 迪米特法則也稱為最少知識原則,一個對象應該對其他對象有最少的瞭解. 通俗的講,一個類應該對自己需要耦合或調用的類知道的最少,被調用類的內部是如何複雜都和我沒關係,我就知道你的這些public方法,我就調用這麼多,其他的我一概不關心. 迪米特法則對類的低耦合提出了要求 1.只和朋友交 ...
迪米特法則的定義
迪米特法則也稱為最少知識原則,一個對象應該對其他對象有最少的瞭解. 通俗的講,一個類應該對自己需要耦合或調用的類知道的最少,被調用類的內部是如何複雜都和我沒關係,我就知道你的這些public方法,我就調用這麼多,其他的我一概不關心.
迪米特法則對類的低耦合提出了要求
1.只和朋友交流
什麼是朋友呢?
出現在成員變數、方法的輸入輸出參數中的類稱為朋友類,而出現在方法體內部的類不屬於朋友類.
註意: 一個類只與朋友交流,不與陌生類交流,類與類之間的關係是建立在類間的,而不是方法間,因此一個方法儘量不引入一個類中不存在的對象,當然,JDK API提供的類除外
2.朋友間也是有距離的
一個類公開的public屬性或方法越多,修改時設計的面也就越大,變更引起的風險擴散也就越大.因此,為了保持朋友類間的距離,在設計時需要反覆衡量:是否還可以再減少public方法和屬性,是否可以修改為private,protected等訪問許可權,是否可以加上final關鍵字等,迪米特法則要求類儘量不要對外公佈太多的public方法和非靜態的public變數.
3.是自己的就是自己的
在實際開發中經常會出現這樣一個方法:放在本類中也可以,放在其他類中也沒有錯,那怎麼去衡量呢?可以堅持這樣一個原則: 如果一個方法放在本類中,既不增加類間關係,也對本類不產生負面影響,那就放置在本類中.
迪米特法則的核心觀念就是類間解耦,弱耦合,只有弱耦合了以後,類的復用率才可以提高.其要求的結果就是產生了大量的中轉或跳轉類,導致系統的複雜性提高,同時也為維護帶來了難度.在採用迪米特原則時需要反覆權衡,既做到讓結構清晰,有做到高內聚低耦合