依賴倒置原則
依賴倒置抽象的概念:
1、高層模塊不應該依賴底層模塊,兩者都應該依賴其抽象。
2、抽象不應該依賴細節。
3、細節應該依賴抽象。
依賴倒置的具體的表現:
1、模塊間的依賴通過抽象發生,實現類之間不直接發生依賴關係。(依賴關係通過介面或者抽象類)
2、介面或者抽象類不依賴於實現類。
3、實現類依賴介面 或者 抽象類
上面提到的可以用一句話概括,面向介面編程(面向對象設計的精髓)。
優點:
採用依賴倒置原則,可以減少類之間的耦合性。提高系統的穩定性,提高可讀性和可維護性。
當需求的變更時,最終只需要修改高層的業務場景類(也就是調用的地方)
依賴倒置對並行開發的影響:
1、只要定義兩者之間的介面(或者抽象類),就可以獨立開發了
2、項目單元測試也可以獨立地運行,就可以測試驅動開發(這是依賴倒置的最高應用場景)
抽象更深入的理解:
1、抽象是對實現的約束,對實現者而言,是一種契約(約束作用)
2、約束自己也約束別人,保證雙方按照契約(抽象)就行開發
依賴倒置中依賴的三種方法:
1、構造函數,傳遞依賴對象 例如:public Driver( ICar_car){}
2、通過setter 方法 例如:public void setCar(ICar_car){}
3、介面聲明 例如:public class Benz implements ICar{}
踐行依賴倒置原則:
1、每個類盡量都有介面 或者 抽象類,或者抽象類和介面兩者並存
2、變數的表面類型盡量是介面或者是抽象類
3、任何類不應該從具體類派生
4、盡量不要覆寫基類已經實現的方法
5、結合里氏替換原則使用
通俗講:
1、介面負責定義公共的屬性和方法,並且聲明與其他對象的依賴關係
2、抽象類負責公共構造部分的實現
3、實現類實現業務邏輯,並且適當進行細化擴展
總結:
1、變數的表面類型盡量是介面或者是抽象類
2、每個類盡量都有介面 或者 抽象類,或者抽象類和介面兩者並存
3、記住一點,面向介面編程,就抓住了依賴倒置原則的核心
推薦閱讀:
※有原則能讓自己更簡單與世界相處
※1 Embrace Reality and Deal with It(擁抱現實,並認真解決)
※瑜伽修習必知的四大法則
※一些準則
※笨方法讀《原則》(12):成功會在你習慣性避免失敗時降臨