# 相依性反向原則(DIP: Dependence Inversion Principle) ###### tags: `Design Patterns` `book` `principle` 這個原則包含了兩個原則主題: * 高層模組不應該相依於低層模組,兩者都應該相依於抽象概念 * 抽象介面不應該相依於實作,而實作應該相依於抽象介面 當高層模組定義了構通介面之後,與低層模組的溝通就應該只透過介面來進行,而在實務上,這個介面可能是以一個類別的變數或物件參考來表示。請注意,在使用這個變數或物件參考的過程中,不能去做任何型別轉換,因為這樣就限定了高層模組只使用某一個低層模組的特定實作。而且,子類別在重新實作時,都要按照介面類別所定義的方法進行實作,不應該在去新增其它方法,讓高層模組有機會麗容轉型的方式去呼叫使用。