依賴反轉原則

Dependency Inversion Principle (DIP)

High-level modules should not depend on low-level modules. Both should depend on abstractions

高階模組不應該依賴低階模組。它們都應該依賴抽象。

Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions.

抽象不應該依賴細節。細節應該依賴抽象。

Example: 電力系統


目的是把高階模組對低階模組的依賴解耦,
改為高階模組依賴定義出的抽象介面
而由低階模組去實現介面

其中的依賴關係被顛倒,使得低階模組依賴於高階的抽象介面。


Def. 發電:泛指從其它種類的能源轉換為電力的過程

最初我們有一個電力系統,發電系統採用火力發電
之後再由輸電系統,配給各個用戶。

今天我們想要抽換發電系統,改為風力發電
卻發現原本的電力系統強耦合於火力發電,不易抽換。

透過定義出抽象的發電介面,我們可以讓電力系統依賴於發電介面,
並讓火力發電、風力發電去實作發電介面。

因為依賴抽象化,未來就更容易抽換發電系統了。

ʕ •ᴥ•ʔ:重讀一次DIP發現重點在於,如何定義出足夠抽象的介面

Share