10. 介面隔離原則

不要在包包內放你不需要的東西

Posted by willsbor Kang on 2019-04-12

介面隔離原則

ISP (Interface Segregation Principle)

假設 User1 只用了 op1()User2 只用了 op2()User3 只用了 op3()

在目前這樣的依賴且是靜態語言的狀況下,User1 並不使用 op2() & op3(),但是在原始碼上卻依賴的他們。所以當修改了 op2() 時,仍然需要重新編譯 User1,儘管 op1() 沒有改變。

分離

User1 的原始碼依賴的對象改成 User1Ops,因此 OPS 中當對於 User1 不關心的的部分做修改,就不會導致要重新編譯 User1

ISP 和程式語言 / ISP 和架構

上面的問題描述,顯然取決於語言類型。像是 Java / swift 這樣的靜態語言,在編寫時,必須使用 import / include,這樣就宣告建立了原始碼的依賴關係,使得必須要重新編譯或部署。

一般來說,如果你所依賴的模組包含了超過你所需要的,那就是有害。對於原始碼如此,對於架構層級也是如此。

總結

包包中帶了你不需要的東西,你卻()依賴這樣的包包,就可能導致你(覺得很重)未曾想過的麻煩

… 在第 13 章「元件內聚性」討論「共同重複使用原則」時,會更詳細的討論

這章節好短 XD
重點是,抓住需要用的面向就好,不要直接用瑞士刀

前陣子好忙,快告一段落了,避免四月沒有文章,趕緊補了這篇(疑