1. 程式人生 > >學習設計模式 - 六大基本原則之依賴倒置原則

學習設計模式 - 六大基本原則之依賴倒置原則

ould inter 法則 car 基本原則 lan not 學習 目標

  設計模式總共有六大基本原則,統稱為SOLID (穩定)原則,分別是S-單一職責原則(Single Responsibility Principle), O-開閉原則(Open closed Principle),L-裏氏替換原則(Liskov Substitution Principle),L-迪米特法則(Law of Demeter),I-接口隔離原則(Interface Segregation Principle),D-依賴倒置原則(Dependence Invension Principle)。


D-依賴倒置原則(Dependence Invension Principle)

一、定義

  高層模塊不應依賴低層模塊,兩者都應依賴其抽象。抽象不應依賴細節。細節應該依賴抽象。(High level modules should not depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details. Details should depend upon Abstractions.)

二、理解

  什麽是依賴?一個對象(假設是A)的功能(方法)需要另一個對象(假設是B)來完成,這就叫做A依賴於B。如,司機開奔馳,司機完成這個動作,需要(依賴於)奔馳跑起來。代碼如下:

  技術分享圖片

  若某一天,老板換了一輛寶馬,讓司機開。司機的代碼會被修改:

  技術分享圖片

  被依賴者(車)的替換(修改),卻要依賴者(Driver)來承擔修改,這是不合理的。

  根據依賴倒置原則,細節(實現)應該依賴於抽象。

  技術分享圖片

  實現案例:https://gitee.com/timfruit189/test-design-pattern

三、依賴傳遞的三種寫法

  1.構造方法傳遞依賴

  2.setter()方法設置依賴

  3.接口方法傳遞依賴,如上 dirve(ICar car)

四、註意事項

  如何在項目中使用這個原則?

    (1) 每個類精良都有接口或抽象類

   (2)變量的表面類型精良是接口或者是抽象類

   (3)任何類都不從具體類派生

      這不是絕對的,有時設計缺陷在所難免,只要不超過兩層的集成都是可以忍受的。

      負責項目維護的同誌基本可以不考慮這個規則了,維護工作基本上都是進行擴展開發,修復行為的。

   (4)盡量不要復寫基類的方法

   (5)結合裏氏替換原則原則使用

  依賴倒置原則是實現開閉原則的重要途徑。

  

  每個原則的有點都是有限度的,並不是放之四海而皆準的真理。所以別為了遵循一個原則二放棄了一個項目的終極目標:投產上線和盈利。作為一個項目經理或架構師,應該懂得技術只是實現目的的工具。

學習資料:

《設計模式之禪》秦小波 著

學習設計模式 - 六大基本原則之依賴倒置原則