依賴倒置(dependence inversion principle)原則講的是:要依賴於抽象,不要依賴於具體。
簡單的說,依賴倒置原則要求客戶端依賴於抽象耦合。
抽象不應當依賴於細節;細節應當依賴於抽象;
要針對介面程式設計,不針對實現程式設計。
舉例說明:
反面例子:
缺點:
耦合太緊密,light發生變化將影響toggleswitch
解決辦法一:
將light作成abstract,然後具體類繼承自light。
toggleswitch依賴於抽象類light,具有更高的穩定性,而bulblight與tubelight繼承自light,可以根據"開放-封閉"原則進行擴充套件。只要light不發生變化,bulblight與tubelight的變化就不會波及toggleswitch。
缺點:
如果用toggleswitch控制一台電視就很困難了。總不能讓tv繼承自light吧。
解決方法二:
更為通用、更為穩定。
啟發式規則:
1、任何變數都不應該持有乙個指向具體類的指標或者引用
2、任何類都不應該從具體類派生(始於抽象,來自具體)
3、任何方法都不應該覆寫它的任何基類中的已經實現了的方法
如何抽象:
抽象反映高層策略,就是應用中那些不會隨著具體細節的改變而改變的規則,常用的詞語就是隱喻(metaphore).仔細分析需求,先找出那些業務規則,然後把它們抽象出來形成你的介面。層次化你的設計,常見的方式就是劃分出顯示層,業務層,持久層,再在每層做抽象。這是最粗糙的層次化,你可以在每層再根據需要劃分更細的層次。在實現的時候始終遵循前面提到的原則:只依賴於介面。誰也無法在開始就做到最好,因此要不斷迭代,精化設計。
使用傳統過程化程式設計所建立的依賴關係,策略依賴於細節,這是糟糕的,因為策略受到細節改變的影響。依賴倒置原則使細節和策略都依賴於抽象,抽象的穩定性決定了系統的穩定性。
結論:
使用傳統過程化程式設計所建立的依賴關係,策略依賴於細節,這是糟糕的,因為策略受到細節改變的影響。依賴倒置原則使細節和策略都依賴於抽象,抽象的穩定性決定了系統的穩定性。
依賴倒置原則 DIP
一 dip簡介 dip dependency inversion principle 1 高層模組不應該依賴於低層模組,二者都應該依賴於抽象。2 抽象不應該依賴於細節,細節應該依賴於抽象。高層模組包含了乙個應該程式中的重要的策略選擇和業務模型,正是這些高層模組才使得其所有的應用程式區別於其他,如果高...
DIP依賴倒置原則
1.高層模組不應該依賴低層模組,二者都應該依賴抽象 2.抽象不應該依賴於細節。細節應該依賴於抽象 1.簡單介紹 結構良好的物件導向架構都具有清晰的層次定義,每個層次通過乙個定義良好的 受控的介面向外提供了一組內聚的服務。對於這個陳述的簡單理解可能會致使設計者設計出類似下圖的結構。圖中,高層的poli...
轉 依賴倒置原則 DIP
依賴倒置 dependence inversion principle 原則講的是 要依賴於抽象,不要依賴於具體。簡單的說,依賴倒置原則要求客戶端依賴於抽象耦合。原則表述 抽象不應當依賴於細節 細節應當依賴於抽象 要針對介面程式設計,不針對實現程式設計。反面例子 缺點 耦合太緊密,light發生變化...