介面隔離原則

Interface Segregation Principle (ISP)

No client should be forced to depend on methods it does not use.

客戶不應該依賴他們不使用的方法。

Example: 咖啡機


透過將龐大的介面,拆分成一個個的小介面,
解開耦合,進而容易重構、修改及部署。

前陣子Johnny提出ISP的目的,是為了多型的實作,也是不錯的觀點。
(註:小介面比較易於實作)


Def. 全自動咖啡機:會自己磨粉、沖煮的咖啡機

假使我們實作一個咖啡機介面
內有兩種方法,分別是磨粉沖煮

隨著對咖啡的興趣增加,我們可能會想玩摩卡壺。
(註:摩卡壺為一種沖煮咖啡的器具)

這時會發現,原本咖啡機介面職責有點多。
摩卡壺沒辦法實作咖啡機介面(不會磨粉)。

透過將介面拆分成:磨粉介面沖煮介面
我們可以讓原本的全自動咖啡機改成實作這兩種介面。

而摩卡壺實作沖煮介面。

這下原本的煮咖啡程式,就可以寫好不修改了。

ʕ •ᴥ•ʔ:ISP不就是介面版本的單一職責原則嗎?(笑)