Udemy課程Design Patterns in Java 5
SOLID Design Principles-(5)Dependency Inversion Principle(DIP)
Dependency Inversion Principle(DIP):依賴反轉原則
解釋:
重要:這個跟Dependency Injection沒有直接關聯
1.當 A 模組在內部使用 B 模組的情況下,我們稱 A 為高階模組,B 為低階模組。高階模組不應該依賴於低階模組,兩者都該依賴抽象介面
2.抽象介面不依賴細項,細項應依賴抽象介面
以下建立一個反例:
執行結果:
雖然執行成功,但是上述例子違反DIP(Dependency Inversion Principle)
修改符合DIP方式如下
Research不應依賴低階模組,而應依賴abstraction
首先建立abstraction,在此以建立interface當範例
並讓Relationships實作RelationshipBrowser
更改Research建構子為如下:
同樣執行Demo得如下結果
Research現在不直接依賴低階模組的Relationships,
而是依賴interface的RelationshipBrowser