設計模式(六)面向對象設計原則之依賴倒轉原則
引用自:http://blog.csdn.net/lovelion 作者:劉偉
依賴倒轉原則(Dependency Inversion Principle, DIP):上層模塊不應該依賴底層模塊,它們都應該依賴於抽象.抽象不應該依賴於細節,細節應當依賴於抽象。換言之,要針對接口編程,而不是針對實現編程。
依賴倒轉原則要求我們在程序代碼中傳遞參數時或在關聯關系中,盡量引用層次高的抽象層類,即使用接口和抽象類進行變量類型聲明、參數類型聲明、方法返回類型聲明,以及數據類型的轉換等,而不要用具體類來做這些事情.
在實現依賴倒轉原則時,我們需要針對抽象層編程,而將具體類的對象通過依賴註入(DependencyInjection, DI)的方式註入到其他對象中,
什麽是依賴?
依賴就是二者之間的一種關系,比如程序員寫代碼需要電腦,如果沒有電腦就沒法編寫代碼.
那就可以說程序員依賴於電腦,相應的電腦被程序員所依賴.
什麽是上層模塊,什麽是底層模塊?
通過職能的重要性來劃分,在軟件開發中,分為業務層,邏輯層,數據層
業務層:需要做什麽樣的操作
邏輯層:根據業務層的需求提供具體實現的細節
數據層:業務層與邏輯層之間的數據模型
那業務層就屬於上層模塊,邏輯層與數據層就屬於底層模塊
什麽是抽象?什麽是細節?
抽象是相對於具體的物體而言,具體的物體又可以看作是細節
比如表演,可以是跳舞,可以是唱歌,那表演就是抽象,跳舞跟唱歌就是具體的細節
在面向對象裏,抽象表現形式就是抽象類或者接口
那依賴倒置原則就可以這樣理解:
原先依賴關系:上層模塊依賴與底層模塊
依賴倒置後: 上層模塊依賴與抽象,底層模塊也依賴與抽象,上層與下層失去了依賴關系
設計模式(六)面向對象設計原則之依賴倒轉原則