最少知識原則(lkp)說的是乙個軟體實體儘量減少與其他實體發生相互。這裡的軟體實體是乙個廣義的概念,
不僅包括物件,還包括系統、類、模組、函式、變數等。本節我們主要針對物件裡說明這個原則。
減少物件之間的聯絡:單一職責原則知道我們把物件劃分成較少物件與物件耦合在一起,有可能會降低他們的可復用性。
在程式中,物件的「朋友」太多並不是一件好事,「城門失火,殃及池魚」的故事時有發生。
最少知識原則要求我們在設計程式時,應當減少物件之間的互動。如果兩個物件之間不必彼此直接通訊,那麼這兩個物件就不要發生直接的相互聯絡。
常見的做法是引入乙個第三者物件,來承擔這些物件之間的通訊作用。如果一些物件需要向另一些物件發起請求,可以通過第三物件來**這些請求。
最少知識原則在設計模式中體現最多的地方是中介者模式
封裝在最少知識原則中的體現
封裝在很大程度上表達的是資料的隱藏。乙個模組或者物件可以將內部的資料或者實現細節隱藏起來,只要暴露必要的介面api供外界訪問。
物件之間難免產生聯絡,當乙個物件必須引用另乙個物件的時候,我們可以暴露必要介面,讓物件之間的聯絡限制在最小的範圍之內。
同樣,封裝也用來限制變數的作用域。把變數的可見性限制在乙個盡可能小的範圍內,這個變數對其他不相關模組的影響就越小,變數被改寫和發生衝突的機會就越少。這也是廣義的最少知識原則的一種體現。
編寫乙個快取效果的計算乘積的封裝函式的示例
最少知識原則
最少知識原則也被稱為迪公尺特法則,比較形象的說法是它讓我們的物件只與自己比較 熟悉 的物件進行互動 talk to your immediate friends 當你設計系統或類的時候,如果在很多類之間有非常多的依賴關係,統計表明這樣設計的系統是很難維護和理解的。下面來說說具體的做法 當你有乙個物件...
設計原則 最少知識原則
定義 乙個物件應該對其他物件保持最少的了解。問題由來 類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類的影響也越大。解決方案 盡量降低類與類之間的耦合。自從我們接觸程式設計開始,就知道了軟體程式設計的總的原則 低耦合,高內聚。無論是面向過程程式設計還是物件導向程式設計,只有使各個模...
設計原則 「最少知識」原則
1.定義 減少物件之間的互動,只留下關係密切的物件。最少知識原則也叫 law of demeter,迪公尺特法則,一句話概括是 不要和陌生人說話 2.目標 希望在我們的設計中,不要讓太多的類耦合在一起,免得修改系統中的一部分,會影響到其他部分。如果許多類之間相互依賴,那麼這個系統就會變成乙個易碎的系...