物件導向設計之依賴倒置原理

2021-06-04 22:22:27 字數 1564 閱讀 6983

依賴倒置原理是羅伯特.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 該文章的最新版本已遷移至個人部落格 位元飛 單擊鏈結 訪問。高層模組不應該依賴低層模組,他們都應該依賴於抽象 抽象不應該依賴於細節,細節應該依賴於抽象。簡單的定義為 面向介面 抽象 程式設計,不要面向實現程式設...