文章出處

在今天,讀書有時是件“麻煩”事。它需要你付出時間,付出精力,還要付出一份心境。--僅以《大話設計模式》來祭奠那逝去的……

依賴倒轉原則:A,高層模塊不應該依賴低層模塊,兩個都應該依賴抽象;B,抽象不應該依賴細節,細節應該依賴抽象。

為什么會叫依賴倒轉?

  面向過程開發時,為了使常用代碼可以復用,一般都會把這些常用代碼寫成許許多多函數的程序庫,這樣我們在做新項目時,去調取這些底層函數就好了。比如我們做的項目大多都要訪問數據庫,所以我們把訪問數據庫的代碼寫成了函數,每次做新項目的時候都去調取這些函數。這就是高層模塊依賴低層模塊,問題也就出在這里。我們要做新項目的時候,發現高層業務邏輯代碼都一樣,但客戶缺希望使用不同的數據庫去實現,這時候就出現麻煩了。我們都希望可以利用這些高層模塊,但是高層模塊都是和底層模塊綁定在一起的,沒辦法復用這些高層模塊,這就非常糟糕了。PC里,如果CPU、內存、硬盤如果都依賴主板,主板一壞就都不能用了。反過來,如果內存壞了,也不能造成其他部件不能用才對。而如果不管高層模塊還是低層模塊,它們都依賴于抽象(接口或者抽象類),只要接口穩定,那么任何一個更改,都不用去擔心其他受到影響,這就使得無論高層還是低層模塊都可以被很容易的復用,這才是最好的方法。

為什么依賴了抽象,就不怕更改了呢?

  里氏替換原則:子類型必須能夠替換掉它的父類型。只有當子類型能夠替換掉父類型,軟件單位的功能不受到影響時,父類才能真正被復用,而子類也能再父類的基礎上增加新的行為。鳥是父類,可以飛,但是企鵝不會飛,所以企鵝就不能是鳥的子類。

  

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()