2017年3月4日 星期六

Dependency Inversion Principle(DIP) 依賴倒置

定義: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.(高層模組不應該依賴低層模組,這兩層應該依賴於一個抽象。而抽象不一該依賴細節,而是細節去依賴抽象。)

簡單說就是program to an interface, not an implementation原則。

在Java中,

  • 抽象:就是interface與abstract class,這兩者都不能直接實體化。
  • 細節:就是指實作那些interface與abstract class的class。
  • 兩層應該依賴於一個抽象:就是指高層的class與低層的class不應該直接互相依賴,它們之間的依賴關係應該要透過interface或是abstract class。
好處:
  • 比較好測試。因為類與類之間沒有直接依賴而是依賴於interface,因此可以自己建立一個簡單實作該interface的類來測試。
  • 只要符合實作interface,那麼修改下層的實體類,可以不用去動到高層。
  • 在增加低層實體類時,只要去修改高層類,而其他低層的實體類可以不用去修改。

沒有留言:

張貼留言