一、solid
設計模式的六大原則有:
把這六個原則的首字母聯合起來(兩個 l 算做乙個)就是 solid (solid,穩定的),其代表的含義就是這六個原則結合使用的好處:建立穩定、靈活、健壯的設計。下面我們來看一下依賴倒置原則。
設計模式六大原則(solid)
二、依賴倒置原則定義
1、上層模組不應該依賴底層模組,它們都應該依賴於抽象。
2、抽象不應該依賴於細節,細節應該依賴於抽象。
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.
三、依賴倒置原則,究竟倒置在**?
在依賴倒置原則中的倒置指的是和一般oo設計的思考方式完全相反。
舉個例子,現在你需要實現乙個比薩店,你第一件想到的事情是什麼?我想到的是乙個比薩店,裡面有很多具體的比薩,如:芝士比薩、素食比薩、海鮮比薩……
比薩店是上層模組,比薩是下層模組,如果把比薩店和它依賴的物件畫成一張圖,看起來是這樣:
正常依賴圖
沒錯!先從頂端開始,然後往下到具體類,但是,正如你看到的你不想讓比薩店理會這些具體類,要不然比薩店將全都依賴這些具體類。現在「倒置」你的想法……別從上層模組比薩店開始思考,而是從下層模組比薩開始,然後想想看能抽象化些什麼。你可能會想到,芝士比薩、素食比薩、海鮮比薩都是比薩,所以它們應該共享乙個pizza介面。對了,你想要抽象化乙個pizza。好,現在回頭重新思考如何設計比薩店。
依賴倒置後的圖
圖一的依賴箭頭都是從上往下的,圖二的箭頭出現了從下往上,依賴關係確實「倒置」了
另外,此例子也很好的解釋了「上層模組不應該依賴底層模組,它們都應該依賴於抽象。」,在最開始的設計中,高層模組pizzastroe直接依賴低層模組(各種具體的pizaa),調整設計後,高層模組和低層模組都依賴於抽象(pizza)
六大原則之依賴倒轉 倒置 原則
package com.study public class dependencyinversion class email 1.優點 呼叫方式簡單 3.解決方法 引入乙個抽象的介面 ireceiver,表示接收者,這樣 person 類與介面 ireceiver 發生依賴 因為 email,wei...
設計原則之依賴倒置原則
定義 高層模組不應該依賴低層模組,二者都應該依賴其抽象 抽象不應該依賴細節 細節應該依賴抽象。問題 類a直接依賴類b,假如要將類a改為依賴類c,則必須通過修改類a的 來達成。這種場景下,類a一般是高層模組,負責複雜的業務邏輯 類b和類c是低層模組,負責基本的原子操作 假如修改類a,會給程式帶來不必要...
設計原則 依賴倒置原則
在物件導向程式設計領域中,依賴倒置原則 dependency inversion principle,dip 是指一種特定的解耦 傳統的依賴關係建立在高層次上,而具體的策略設定則應用在低層次的模組上 形式,使得高層次的模組不依賴於低層次的模組的實現細節,依賴關係被顛倒 反轉 從而使得低層次模組依賴於...