依賴倒轉原則

2021-10-18 07:35:09 字數 3095 閱讀 1841

高層模組不應該依賴低層模組,兩者都應該依賴其抽象;抽象不應該依賴細節,細節應該依賴抽象。簡單的說就是要求對抽象進行程式設計,不要對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合。

現要組裝一台電腦,需要配件cpu,硬碟,記憶體條。只有這些配置都有了,計算機才能正常的執行。選擇cpu有很多選擇,如intel,amd等,硬碟可以選擇希捷,西數等,記憶體條可以選擇金士頓,海盜船等。

希捷硬碟類(xijieharddisk):

public

class

xijieharddisk

implements

harddisk

public string get()

}

intel處理器(intelcpu):

public

class

intelcpu

implements

cpu}

金士頓記憶體條(kingstonmemory):

public

class

kingstonmemory

implements

memory

}

電腦(computer):

public

class

computer

public

void

setcpu

(intelcpu cpu)

public kingstonmemory getmemory()

public

void

setmemory

(kingstonmemory memory)

public xijieharddisk getharddisk()

public

void

setharddisk

(xijieharddisk harddisk)

public

void

run(

)}

測試類(testcomputer):測試類用來組裝電腦。

public

class

testcomputer

}

執行計算機

使用希捷希捷硬碟取資料

從硬碟上獲取的資料是:資料

使用intel處理器

使用金士頓記憶體條

上面**可以看到已經組裝了一台電腦,但是似乎組裝的電腦的cpu只能是intel的,記憶體條只能是金士頓的,硬碟只能是希捷的,這對使用者肯定是不友好的,使用者有了機箱肯定是想按照自己的喜好,選擇自己喜歡的配件。

根據依賴倒轉原則進行改進。**只需要修改computer類,讓computer類依賴抽象(各個配件的介面),而不是依賴於各個元件具體的實現類。

// 獲取資料的方法

public string get()

}computer

public

class

computer

public

void

setharddisk

(harddisk harddisk)

public cpu getcpu()

public

void

setcpu

(cpu cpu)

public memory getmemory()

public

void

setmemory

(memory memory)

public

void

run(

)}

computerdemo

public

class

computerdemo

}

執行計算機

使用希捷希捷硬碟取資料

從硬碟上獲取的資料是:資料

使用intel處理器

使用金士頓記憶體條

物件導向的開發很好的解決了這個問題,一般情況下抽象的變化概率很小,讓使用者程式依賴於抽象,實現的細節也依賴於抽象。即使實現細節不斷變動,只要抽象不變,客戶程式就不需要變化。這大大降低了客戶程式與實現細節的耦合度。

依賴倒轉原則

1 所謂依賴倒置原則 dependence inversion principle 就是要依賴於抽象,不要依賴於具體。簡單的說就是要求對抽象進行程式設計,不要對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合。2 面向過程的開發,上層呼叫下層,上層依賴於下層,當下層劇烈變動時上層也要跟著變動,這...

依賴倒轉原則

一 什麼是依賴倒轉原則?抽象不應當依賴於細節 細節應當依賴於抽象 或者說 要針對介面程式設計,不要針對實現程式設計 二 為什麼叫做依賴倒轉原則?傳統的過程性系統設計傾向於使高層次的模組依賴於低層次的模組 抽象層次依賴於具體層次。依賴倒轉原則就是要把這種依賴關係倒轉。抽象層包含的是系統的商務邏輯和巨集...

依賴倒轉原則

依賴倒轉原則 依賴倒轉原則,意思就是抽象不應該依賴細節,細節應該依賴抽象,說白了,就是要針對介面程式設計,不要對實現程式設計。為什麼要叫 倒轉 面向過程開發時,為了使 可以復用,一般會把常用的 封裝成許多函式的程式庫,這樣再寫新專案時這些底層 也可以使用,這種情況就是高層模組依賴底層模組,這屬於 正...