Interface Segregation Principle (ISP)
No client should be forced to depend on methods it does not use.
客戶不應該依賴他們不使用的方法。
Example: 咖啡機
透過將龐大的介面,拆分成一個個的小介面,
解開耦合,進而容易重構、修改及部署。
前陣子Johnny提出ISP的目的,是為了多型的實作,也是不錯的觀點。
(註:小介面比較易於實作)
Def. 全自動咖啡機:會自己磨粉、沖煮的咖啡機。
假使我們實作一個咖啡機介面,
內有兩種方法,分別是磨粉及沖煮。
隨著對咖啡的興趣增加,我們可能會想玩摩卡壺。
(註:摩卡壺為一種沖煮咖啡的器具)
這時會發現,原本咖啡機介面職責有點多。
摩卡壺沒辦法實作咖啡機介面(不會磨粉)。
透過將介面拆分成:磨粉介面、沖煮介面,
我們可以讓原本的全自動咖啡機改成實作這兩種介面。
而摩卡壺實作沖煮介面。
這下原本的煮咖啡程式,就可以寫好不修改了。
ʕ •ᴥ•ʔ:ISP不就是介面版本的單一職責原則嗎?(笑)