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,那麼修改下層的實體類,可以不用去動到高層。
- 在增加低層實體類時,只要去修改高層類,而其他低層的實體類可以不用去修改。
沒有留言:
張貼留言