1. 程式人生 > >6大設計原則之迪米特法則

6大設計原則之迪米特法則

迪米特法則的定義

迪米特法則也稱為最少知識原則,一個物件應該對其他物件有最少的瞭解. 通俗的講,一個類應該對自己需要耦合或呼叫的類知道的最少,被呼叫類的內部是如何複雜都和我沒關係,我就知道你的這些public方法,我就呼叫這麼多,其他的我一概不關心.

迪米特法則對類的低耦合提出了要求

1.只和朋友交流

什麼是朋友呢?

出現在成員變數、方法的輸入輸出引數中的類稱為朋友類,而出現在方法體內部的類不屬於朋友類.

注意: 一個類只與朋友交流,不與陌生類交流,類與類之間的關係是建立在類間的,而不是方法間,因此一個方法儘量不引入一個類中不存在的物件,當然,JDK API提供的類除外

2.朋友間也是有距離的

一個類公開的public屬性或方法越多,修改時設計的面也就越大,變更引起的風險擴散也就越大.因此,為了保持朋友類間的距離,在設計時需要反覆衡量:是否還可以再減少public方法和屬性,是否可以修改為private,protected等訪問許可權,是否可以加上final關鍵字等,迪米特法則要求類儘量不要對外公佈太多的public方法和非靜態的public變數.

3.是自己的就是自己的

在實際開發中經常會出現這樣一個方法:放在本類中也可以,放在其他類中也沒有錯,那怎麼去衡量呢?可以堅持這樣一個原則: 如果一個方法放在本類中,既不增加類間關係,也對本類不產生負面影響,那就放置在本類中.


迪米特法則的核心觀念就是類間解耦,弱耦合,只有弱耦合了以後,類的複用率才可以提高.其要求的結果就是產生了大量的中轉或跳轉類,導致系統的複雜性提高,同時也為維護帶來了難度.在採用迪米特原則時需要反覆權衡,既做到讓結構清晰,有做到高內聚低耦合


 

 

可以關注一下鄙人的公眾號, 謝謝各位了!