Java設計原則 依賴倒置原則

2021-08-16 23:49:35 字數 1364 閱讀 7309

高層模組不應該依賴低層模組,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。

高層模組主要負責複雜的業務邏輯,低層模組主要負責基本的原子操作。

高層模組本來依賴低層模組,只有依賴低層模組,才能使用低層模組的功能。那為什麼說高層模組不應該依賴低層模組?不是很奇怪嗎?

其實應該這樣說,高層模組不應該直接依賴低層模組,而是通過抽象類或介面產生依賴關係

我們設計一台機器,生產糖的,初始的原料只有甘蔗

public

class cane

}public

class machine

}public

class client

}

現在又增加一種原材料,甜菜

public

class beet

}

因為目前這台機器只能使用甘蔗產糖,不接受甜菜這種原材料,所以我們得「修理」機器,讓它接受甜菜這種材料產糖

public

class machine

public

void

make(beet beet)

}

如果又增加一種原材料呢,結果還得繼續「修理」機器!我們想哈,既然是產糖的機器,那它應該能接受各種具有轉化為糖的原材料才是呀!ok,我們把具有轉化為糖的抽象為乙個介面:

public

inte***ce

isugar

public

class

cane

implements

isugar

}public

class

beet

implements

isugar

}public

class

machine

}

這樣的話,這台機器就可以接受各種能轉化為糖的原材料了,無論來了哪種原材料,也不用「修理」機器了。

例子中,機器屬於高層模組,原材料屬於低層模組,機器並沒有直接依賴甘蔗或者甜菜(細節),而是依賴能轉化為糖的原材料(抽象)。

這樣設計的好處是,無論怎麼實現或擴充套件低層模組,高層模組幾乎不受影響,因為高層並不直接依賴低層模組具體實現。

所以遵循依賴倒置原則可以降低類之間的耦合性,提高系統的穩定性,降低修改程式造成的風險。

要遵守依賴倒置原則,要求我們做到:

低層模組盡量依賴抽象類或介面;

變數宣告的型別盡量是抽象類或是介面;

如果真正做到了依賴倒置,那麼你也應該理解面向介面程式設計了,加油!!

設計原則 依賴倒置原則

在物件導向程式設計領域中,依賴倒置原則 dependency inversion principle,dip 是指一種特定的解耦 傳統的依賴關係建立在高層次上,而具體的策略設定則應用在低層次的模組上 形式,使得高層次的模組不依賴於低層次的模組的實現細節,依賴關係被顛倒 反轉 從而使得低層次模組依賴於...

設計原則之依賴倒置原則

定義 高層模組不應該依賴低層模組,二者都應該依賴其抽象 抽象不應該依賴細節 細節應該依賴抽象。問題 類a直接依賴類b,假如要將類a改為依賴類c,則必須通過修改類a的 來達成。這種場景下,類a一般是高層模組,負責複雜的業務邏輯 類b和類c是低層模組,負責基本的原子操作 假如修改類a,會給程式帶來不必要...

opp設計原則 依賴倒置原則

定義 高層模組不應該依賴低層模組,二者都應該依賴其抽象 抽象不應該依賴細節 細節應該依賴抽象。問題由來 類a直接依賴類b,假如要將類a改為依賴類c,則必須通過修改類a的 來達成。這種場景下,類a一般是高層模組,負責複雜的業務邏輯 類b和類c是低層模組,負責基本的原子操作 假如修改類a,會給程式帶來不...