Udemy課程Design Patterns in Java 5

SOLID Design Principles-(5)Dependency Inversion Principle(DIP)

ZONGRU Li
2 min readSep 26, 2019

Dependency Inversion Principle(DIP):依賴反轉原則

解釋:

重要:這個跟Dependency Injection沒有直接關聯

1.當 A 模組在內部使用 B 模組的情況下,我們稱 A 為高階模組,B 為低階模組。高階模組不應該依賴於低階模組,兩者都該依賴抽象介面

2.抽象介面不依賴細項,細項應依賴抽象介面

以下建立一個反例:

與資料儲存有直接關係的low level module
使用low level module當建構子參數的high level module
試執行的進入點程式

執行結果:

雖然執行成功,但是上述例子違反DIP(Dependency Inversion Principle)

修改符合DIP方式如下

Research不應依賴低階模組,而應依賴abstraction

首先建立abstraction,在此以建立interface當範例

新增RelationshipBrowser interface

並讓Relationships實作RelationshipBrowser

更改Research建構子為如下:

同樣執行Demo得如下結果

Research現在不直接依賴低階模組的Relationships,

而是依賴interface的RelationshipBrowser

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet