Udemy課程Design Patterns in Java 4

SOLID Design Principles-(4)Interface Segregation Principle(ISP)

ZONGRU Li
2 min readJul 23, 2019

Interface Segregation Principle(ISP):介面隔離原則

解釋:

最小化介面設定,避免開出過於肥胖的介面設定,導致實作類別因為部分override未確實實作等原因而造成錯誤產生

建立一個類別,以供說明用而已...

再作一個違反ISP的介面-Machine

這是一個過肥的介面,違反ISP

再做一個實作上述介面的類

該類別實做上沒有問題

接著再做另一個實作類別,該類不能完全Override介面的方法

OldFashionPrinter無法完全實作介面的方法

無法實作的Method可能拋出錯誤,甚至IDE會要求介面也要拋出Exception

但是我們有可能無法更改介面的原始碼,因為介面有可能來自lib jar裡

造成上述問題根本原因就在介面Machine過於肥大

所以比較好的做好是拆解這肥大的介面,ex:↓

所以實作類就可以簡單的挑要實作的介面就好

JustAPrinter只需要實作Printer,不用實作fax也不用實作scan

當然也有可能一次需要實作兩個介面 ex:↓

又或是在已經有拆解Printer與Scanner這種最小化介面情況下

我們可以有空間定義兩者都有的介面

然後實作

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet