1. 程式人生 > >《JavaScript設計模式與開發實踐》原則篇(2)—— 最少知識原則

《JavaScript設計模式與開發實踐》原則篇(2)—— 最少知識原則

最少知識原則(LKP)說的是一個軟體實體應當儘可能少地與其他實體發生相互作用。這 裡的軟體實體是一個廣義的概念,不僅包括物件,還包括系統、類、模組、函式、變數等。 單一職責原則指導我們把物件劃分成較小的粒度,這可以提高物件的可複用性。但越來越 多的物件之間可能會產生錯綜複雜的聯絡,如果修改了其中一個物件,很可能會影響到跟它相 互引用的其他物件。物件和物件耦合在一起,有可能會降低它們的可複用性。

使用LKP的設計模式

  • 中介者模式 中介者模式很好地體現了最少知識原則。通過增加一箇中介者物件,讓所有的相關物件都通 過中介者物件來通訊,而不是互相引用。所以,當一個物件發生改變時,只需要通知中介者物件 即可。

封裝在最少知識原則中的體現

封裝在很大程度上表達的是資料的隱藏。一個模組或者物件可以將內部的資料或者實現細 節隱藏起來,只暴露必要的介面 API 供外界訪問。物件之間難免產生聯絡,當一個物件必須引 用另外一個物件的時候,我們可以讓物件只暴露必要的介面,讓物件之間的聯絡限制在最小的範圍之內。 把變數的可見性限制在一個儘可能小的範圍內,這個變數對其他不相關模組的影響就越小, 變數被改寫和發生衝突的機會也越小。這也是廣義的LKP的一種體現

總結

雖然遵守最小知識原則減少了物件之間的依賴,但也有可能增加一些龐大到難 以維護的第三者物件。在實際開發中,是否選擇讓程式碼符合最少知識原則, 要根據具體的環境來定。

系列文章:

《JavaScript設計模式與開發實踐》基礎篇(1)—— this、call 和 apply

《JavaScript設計模式與開發實踐》基礎篇(2)—— 閉包和高階函式

《JavaScript設計模式與開發實踐》模式篇(1)—— 單例模式

《JavaScript設計模式與開發實踐》模式篇(2)—— 策略模式

《JavaScript設計模式與開發實踐》模式篇(3)—— 代理模式

《JavaScript設計模式與開發實踐》模式篇(4)—— 迭代器模式

《JavaScript設計模式與開發實踐》模式篇(5)—— 觀察者模式

《JavaScript設計模式與開發實踐》模式篇(6)—— 命令模式

《JavaScript設計模式與開發實踐》模式篇(7)—— 組合模式

《JavaScript設計模式與開發實踐》模式篇(8)—— 模板方法模式

《JavaScript設計模式與開發實踐》模式篇(9)—— 享元模式

《JavaScript設計模式與開發實踐》模式篇(10)—— 職責鏈模式

《JavaScript設計模式與開發實踐》模式篇(11)—— 中介者模式

《JavaScript設計模式與開發實踐》模式篇(12)—— 裝飾者模式

《JavaScript設計模式與開發實踐》模式篇(13)—— 狀態模式

《JavaScript設計模式與開發實踐》模式篇(14)—— 介面卡模式

《JavaScript設計模式與開發實踐》原則篇(1)—— 單一職責原則

《JavaScript設計模式與開發實踐》原則篇(2)—— 最少知識原則