設計模式六大原則3---》依賴倒置原則(Dependence Inversion Principle)

依賴倒置原則定義:高層模塊不應該依賴底層模塊,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。
問題由來:類A直接依賴類B,假如要將類A改爲依賴類C,則必須通過修改類A的代碼來實現。這種場景下,類A一般是高層模塊,負責複雜的業務邏輯;類B和類C是底層模塊,負責基本的原子操作;假如修改A,會給程序帶來不必要的風險。
解決方案:將類A修改爲依賴接口I,類B和類C各自實現接口I,類A通過接口I間接與類B或者類C發生聯繫,則會大大降低修改類A的機率。
依賴倒置原則基於這樣的一個事實;相對於細節的多變性,抽象的東西要穩定的多。以抽象爲基礎搭建起來的框架比細節爲基礎搭建起來的架構要穩定的多。抽象指的是接口或者抽象類,細節就是具體的實現類,使用接口或者抽象類的目的是制定好的規範和契約,而不去涉及任何具體的操作,把展現細節的任務交給他們的實現類去完成。
依賴倒置原則的核心思想是面向接口編程,我們依舊用一個例子來說明面向接口編程比相對於面向實現編程好在什麼地方。場景是這樣,定義騎行單車的接口,然後定義兩個類來 實現騎行單車的接口;最後運行

最後如果中間實現的類發生變化,不會影響接口AbstactBike,以及接口的調用類Ride.
注意點:1.底層模塊儘量都要有抽象類或接口,或者兩者都有。2.變量的聲明類型儘量是抽象類或接口。3.使用繼承時遵循里氏替換原則,依賴倒置的原則核心就是要我們面向接口編程。