依賴倒置(Dependence Inversion Principle)原則講的是:要依賴于抽象,不要依賴于具體。
簡單的說,依賴倒置原則要求客戶端依賴于抽象耦合。原則表述:phpma開源 羅江游魚
抽象不應當依賴于細節;細節應當依賴于抽象;
要針對接口編程,不針對實現編程。
反面例子:

缺點:耦合太緊密,Light發生變化將影響ToggleSwitch。
解決辦法一:
將Light作成Abstract,然后具體類繼承自Light。

優點:ToggleSwitch依賴于抽象類Light,具有更高的穩定性,而BulbLight與TubeLight繼承自Light,可以根據"開放-封閉"原則進行擴展。只要Light不發生變化,BulbLight與TubeLight的變化就不會波及ToggleSwitch。
缺點:如果用ToggleSwitch控制一臺電視就很困難了??偛荒茏?span lang="EN-US">TV繼承自Light吧。
解決方法二:

優點:更為通用、更為穩定。
結論:
使用傳統過程化程序設計所創建的依賴關系,策略依賴于細節,這是糟糕的,因為策略受到細節改變的影響。依賴倒置原則使細節和策略都依賴于抽象,抽象的穩定性決定了系統的穩定性。