依賴反轉原則
定義
High level modules should not depend upon low level modules.
Both should depend upon abstractions.
Abstractions should not depend upon details. Details should depend upon abstractions.
說明
- 高層次的模組不應該依賴於低層次的模組,兩者都應該依賴於抽象介面。
- 抽象介面不應該依賴於具體實現。而具體實現則應該依賴於抽象介面。
實作建議
- 每個類別都需要有介面或抽象類別
- 使用的變數型別應該盡量是抽象而不是具體類別。
- 盡量不要從具體類別繼承。
當然實務上沒有對的情境,但如果已經知道繼承會導致一些衍伸的問題,那在做這個決定之前,更應該好好思考一下,是否能夠用繼承介面來解決,又或者是有其他的做法可以處理。
- 結合里氏替換原則的內容,可以得出一個大致的規範。
介面:負責定義 public 的方法和屬性 抽象類:負責定義建構函式部分的實現
實例
需求
// ...