設計原則-依賴反轉原則
-
控制反轉
實際上,控制反轉是一個比較籠統的設計思想,並不是一種具體的實現方法,一般用來指導框架層面的設計。這裡所說的“控制”指的是對程式執行流程的控制,而“反轉”指的是在沒有使用框架之前,程式設計師自己控制整個程式的執行。在使用框架之後,整個程式的執行流程通過框架來控制。流程的控制權從程式設計師“反轉”給了框架。 -
依賴注入
依賴注入和控制反轉恰恰相反,它是一種具體的編碼技巧。我們不通過 new 的方式在類內部建立依賴類的物件,而是將依賴的類物件在外部建立好之後,通過建構函式、函式引數等方式傳遞(或注入)給類來使用。 -
依賴注入框架
我們通過依賴注入框架提供的擴充套件點,簡單配置一下所有需要的類及其類與類之間依賴關係,就可以實現由框架來自動建立物件、管理物件的生命週期、依賴注入等原本需要程式設計師來做的事情。 -
依賴反轉原則
依賴反轉原則也叫作依賴倒置原則。這條原則跟控制反轉有點類似,主要用來指導框架層面的設計。高層模組不依賴低層模組,它們共同依賴同一個抽象。抽象不要依賴具體實現細節,具體實現細節依賴抽象。
依賴反轉原則(DIP)
- 依賴反轉原則的英文翻譯是 Dependency Inversion Principle,縮寫為 DIP。中文翻譯有時候也叫依賴倒置原則。
- 英文描述
High-level modules shouldn’t depend on low-level modules. Both modules
should depend on abstractions. In addition, abstractions shouldn’t depend on
details. Details depend on abstractions.
- 中文描述
高層模組(high-level modules)不要依賴低層模組(low-level)。高層模組和低層模組應該通過抽象(abstractions)來互相依賴。除此之外,抽象(abstractions)不要依賴具體實現細節(details),具體實現細節
(details)依賴抽象(abstractions)。
所謂高層模組和低層模組的劃分,簡單來說就是,在呼叫鏈上,呼叫者屬於高層,被呼叫者屬於低層。在平時的業務程式碼開發中,高層模組依賴底層模組是沒有任何問題的。實際上,這條原則主要還是用來指導框架層面的設計,跟前面講到的控制反轉類似。我們拿 Tomcat
這個 Servlet 容器作為例子來解釋一下。
Tomcat 是執行 Java Web 應用程式的容器。我們編寫的 Web 應用程式程式碼只需要部署在Tomcat 容器下,便可以被 Tomcat 容器呼叫執行。按照之前的劃分原則,Tomcat 就是高層模組,我們編寫的 Web 應用程式程式碼就是低層模組。Tomcat 和應用程式程式碼之間並沒有直接的依賴關係,兩者都依賴同一個“抽象”,也就是 Sevlet 規範。Servlet 規範不依賴具體的 Tomcat 容器和應用程式的實現細節,而 Tomcat 容器和應用程式依賴 Servlet規範。
相關文章
- 設計原則之【依賴反轉原則】
- 軟體設計原則—依賴倒轉原則
- 設計模式六大原則(3):依賴倒置原則設計模式
- SOLDI原則之DIP:依賴倒置原則
- Java設計模式之依賴倒置原則Java設計模式
- 面象物件設計6大原則之五:依賴倒置原則物件
- 依賴倒置三個原則
- 四 : DIP(依賴倒置原則)
- 嘻哈說:設計模式之依賴倒置原則設計模式
- 依賴倒轉原則--學習筆記筆記
- 依賴倒置原則(Dependence Inversion Principle)
- 什麼是依賴倒置原則
- 完整的PHP依賴倒置原則例程PHP
- 3. 目標精通--用java寫設計模式:依賴倒轉原則Java設計模式
- 設計原則:開閉原則(OCP)
- Laravel深入學習12 – 依賴倒置原則Laravel
- python3 依賴倒置原則示例Python
- 反射、特性、依賴注入、介面隔離原則反射依賴注入
- 設計原則
- 設計原則:介面隔離原則(ISP)
- 設計原則之【介面隔離原則】
- 設計模式之依賴倒置原則含義及現實舉例設計模式
- 依賴倒置原則的基本用法和介紹
- 設計原則之【單一職責原則】
- 設計原則之【開放封閉原則】
- 設計原則之【裡式替換原則】
- 軟體設計原則—介面隔離原則
- 軟體設計原則—合成複用原則
- 物件導向設計原則,以及包的設計原則物件
- URI設計原則
- Hbase 設計原則
- 程式設計原則程式設計
- XP設計原則
- 安全設計原則
- 開閉原則——物件導向程式設計原則物件程式設計
- 物件導向設計原則之開閉原則物件
- 設計原則 設計模式設計模式
- 設計模式 - 設計原則設計模式