大話設計模式------依賴倒轉原則

1、定義:

程序要依賴於抽象接口,不要依賴於具體實現。簡單地說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實現模塊間的耦合。

2、抽象不應該依賴細節,細節應該依賴於抽象,即針對接口編程,不要對實現編程。

3、高層模塊(例如CPU、內存、硬盤、程序中的主代碼)不應該依賴於低層模塊(例如主板、做項目時數據庫代碼封裝成的低層函數等),因爲這樣,如果低層模塊發生改變,則高層模塊便不能再被複用。

4、爲什麼高層模塊依賴了抽象的接口或抽象類,就不怕低層模塊更改呢?

里氏代換原則:子類型必須能夠替換掉它們的父類型(注:子類擁有父類所有非private的行爲和屬性,因爲企鵝不會飛,不能繼承鳥類的飛行方法,所以企鵝不是鳥的子類)。是抽象化的具體實現,而「開放-封閉原則」的關鍵步驟就是抽象化。

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

由於子類型的可替換性才使得使用父類類型的模塊在無需修改的情況下就可以擴展。

高層模塊依賴於接口或抽象類,低層模塊繼承於接口或抽象類。

5、依賴倒轉其實可以說是面向對象設計的標誌,用哪種語言來編寫程序不重要,如果編寫時考慮的都是如何針對抽象編程而不是針對細節編程,即程序中所有的依賴關係都是終止於抽象類或者接口,那就是面向對象的設計,反之那就是過程化的設計了。

6、無論是高層還是底層都應該依賴於抽象類或接口,這樣只有接口是穩定的,那麼無論高層或底層發生改變,都沒有關係,底層或高層都很容易被複用。

7.結構圖