1. 程式人生 > >設計模式(六)面向對象設計原則之依賴倒轉原則

設計模式(六)面向對象設計原則之依賴倒轉原則

關系 開發 span 上層 返回 設計 關聯 表現 通過

引用自:http://blog.csdn.net/lovelion 作者:劉偉

依賴倒轉原則(Dependency Inversion Principle, DIP)上層模塊不應該依賴底層模塊,它們都應該依賴於抽象.抽象不應該依賴於細節,細節應當依賴於抽象。換言之,要針對接口編程,而不是針對實現編程

依賴倒轉原則要求我們在程序代碼中傳遞參數時或在關聯關系中,盡量引用層次高的抽象層類,即使用接口和抽象類進行變量類型聲明、參數類型聲明、方法返回類型聲明,以及數據類型的轉換等,而不要用具體類來做這些事情.

在實現依賴倒轉原則時,我們需要針對抽象層編程,而將具體類的對象通過依賴註入(DependencyInjection, DI)的方式註入到其他對象中,

依賴註入是指當一個對象要與其他對象發生依賴關系時,通過抽象來註入所依賴的對象。常用的註入方式有三種,分別是:構造註入,設值註入(Setter註入)和接口註入構造註入是指通過構造函數來傳入具體類的對象,設值註入是指通過Setter方法來傳入具體類的對象,而接口註入是指通過在接口中聲明的業務方法來傳入具體類的對象。這些方法在定義時使用的是抽象類型,在運行時再傳入具體類型的對象,由子類對象來覆蓋父類對象。

什麽是依賴?

依賴就是二者之間的一種關系,比如程序員寫代碼需要電腦,如果沒有電腦就沒法編寫代碼.

那就可以說程序員依賴於電腦,相應的電腦被程序員所依賴.

什麽是上層模塊,什麽是底層模塊?

通過職能的重要性來劃分,在軟件開發中,分為業務層,邏輯層,數據層

業務層:需要做什麽樣的操作

邏輯層:根據業務層的需求提供具體實現的細節

數據層:業務層與邏輯層之間的數據模型

那業務層就屬於上層模塊,邏輯層與數據層就屬於底層模塊

什麽是抽象?什麽是細節?

抽象是相對於具體的物體而言,具體的物體又可以看作是細節

比如表演,可以是跳舞,可以是唱歌,那表演就是抽象,跳舞跟唱歌就是具體的細節

在面向對象裏,抽象表現形式就是抽象類或者接口

那依賴倒置原則就可以這樣理解:

原先依賴關系:上層模塊依賴與底層模塊

依賴倒置後: 上層模塊依賴與抽象,底層模塊也依賴與抽象,上層與下層失去了依賴關系

設計模式(六)面向對象設計原則之依賴倒轉原則