依賴倒轉原則

2022-03-10 14:52:38 字數 1431 閱讀 1087

舉個栗子,我們的電腦藍屏了,一般是記憶體條壞了,這時候我們只需要更換記憶體條就可以保證電腦重新正常執行。

但是如果是收音機壞了,我們往往有種無從下手的感覺,為什麼複雜的電腦容易修而簡單的收音機卻這麼難修呢?

依賴倒轉原則

a.高層模組不應該依賴底層模組。兩個都應該依賴抽象。

b.抽象不應該依賴細節。細節應該依賴抽象。

為什麼要叫倒轉呢?

面向過程開發時,為了使**復用,一般都會把這些**寫成許多函式的程式庫,做專案時只需要呼叫這些低層的函式庫就可以了。

比如我們做的專案大多要訪問資料庫,所以我們把資料庫的**寫成函式,每次呼叫就可以了,這就叫做高層模組依賴低層模組。

但客戶希望使用不同的資料庫或儲存方式,麻煩就出現了,因為高層模組都是和底層的訪問資料庫繫結在一起的,沒辦法復用這些高層模組。

就像電腦如果cpu、記憶體、硬碟都需要依賴主機板,主機板一壞,所有部件就都沒用了。反過來,記憶體壞了也不應該造成其他部件不能使用才對。

如果不管高層模組還是低層模組,都依賴於抽象,具體點就是介面或抽象類,只要介面是穩定的,那麼任何乙個更改都不用擔心其他受到影響,這就使得高低模組都可以復用。

為什麼依賴了抽象的介面或抽象類,就不怕更改呢?

黎克特制代換原則

子型別必須能夠替換掉他們的父型別。

面相物件設計時,乙個是鳥類,乙個是企鵝類,如果鳥是可以飛的,企鵝不會飛,那麼企鵝是鳥嗎?企鵝可以繼承鳥這個類嗎?

按我們現實的角度,企鵝是一種特殊的鳥,盡快不能飛,但他也是鳥,當然可以繼承

但是在物件導向設計時,子類擁有父類所有非private的行為和屬性。鳥會飛,而企鵝不會飛。

盡快在生物學的分類上企鵝是一種鳥,但在程式設計世界裡,企鵝不能以父類——鳥的身份出現。因為前提說所有鳥都能飛,而企鵝飛不了,所以企鵝不能繼承鳥類。

也正因為有了這個原則,使得繼承復用成為了可能

只有當子類可以替換掉父類,軟體單位的功能不受影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。

也正因為有了黎克特制替換原則,才是的開放-封閉成為了可能,正是由於子類的可替換性才使得使用父類型別的模組在無需修改的情況下就可以擴充套件。

依賴倒轉起始就是誰也不需要依賴誰,除了約定的介面,大家都可以靈活自如。

收音機就是典型的耦合過度,只要收音機出現故障,不管是沒有聲音、不能調頻還是有雜音,反正都很難修理,因為各個部件相互依賴,難以維護。

賴倒轉可以說是物件導向設計的標誌,用哪種語言不重要,如果編寫時考慮的都是如何針對抽象程式設計而不是針對細節程式設計,

即程式中所有的依賴關係都是終止於抽象類或介面,那就是物件導向的設計,反之那就是過程化的設計了。

依賴倒轉原則

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

依賴倒轉原則

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

依賴倒轉原則

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