依賴倒置原理是羅伯特.c.馬丁提出來的,其中心思想如下:
高層模組不能依賴低層模組,兩者都要依賴抽象。抽象不能依賴具體,具體要依賴抽象。
這個原理倒置了傳統的高層模組依賴低層模組的觀念,提出了高層或低層模組要依賴抽象,下面我們用乙個三層協議棧的例設計子來詳細說明下
該原理。
分以下三個步驟來說明:
初始設計
考察下面的無線電通訊三層協議的**,三層協議分別是:
每一層對應乙個類, **骨架如下:
layers
class rlc_physical_layer
void handle_device_receive(datagram *p_datagram)
};class rlc_datalink_layer
void handle_physical_layer_receive(datagram *p_datagram)
};class rlc_network_layer
void handle_datalink_layer_receive(datagram *p_datagram)
};
這不是乙個好的設計,因為有如下限制:
要解決以上問題, 就必須引入乙個抽象層,讓這些層都去依賴抽象層, 這就是依賴倒置原理的具體應用。
用依賴倒置原理來修改設計
先來設計乙個抽象層, 該抽象層的要點如下:
下面的**設計完全解耦合了三層的關係,所有層都只依賴於抽象層了。
protocol_layer abstraction
// protocol_layer abstraction has been defined to decouple the
// different protocol layers. now the layers only depend upon
// this abstraction.
class protocol_layer
// process and transmit the datagram passed by higher layer.
void transmit(datagram *p_datagram)
}// receive handler for a datagram received from lower layer
void handle_receive(datagram *p_datagram)
}};class rlc_physical_layer : public protocol_layer
};class rlc_datalink_layer : public protocol_layer
};class rlc_network_layer : public protocol_layer
};
依賴倒置的優點
依賴倒置原則 物件導向設計原則之依賴倒置原則
依賴倒置原則的定義 依賴倒置原則 dependence inversion principle,dip 是 object mentor 公司總裁羅伯特 馬丁 robert c.martin 於 1996 年在 c report 上發表的文章。依賴倒置原則的原始定義為 高層模組不應該依賴低層模組,兩者...
物件導向設計原則 依賴倒置原則
依賴倒置原則 dependence inversion principle,dip 依賴倒置原則的原始定義為 高層模組不應該依賴低層模組,兩者都應該依賴其抽象 抽象不應該依賴細節,細節應該依賴抽象。其核心思想是 要面向介面程式設計,不要面向實現程式設計。依賴倒置原則是實現開閉原則的重要途徑之一,它降...
物件導向設計原則之4 依賴倒置原則
依賴倒置原則 dependence inversion principle or dip 該文章的最新版本已遷移至個人部落格 位元飛 單擊鏈結 訪問。高層模組不應該依賴低層模組,他們都應該依賴於抽象 抽象不應該依賴於細節,細節應該依賴於抽象。簡單的定義為 面向介面 抽象 程式設計,不要面向實現程式設...