ISP接口隔離原則

1、定義

  不該該強迫客戶程序依賴並未使用的方法函數

2、接口污染

  接口污染,在C#、C++這樣的靜態類型語言中是很常見的。一個接口會被他不須要的方法污染。在接口中假如一個方法只是爲了能給它的一個子類帶來好處。若持續這樣作的話,那麼每次子類須要一個新方法時,這個方法就會加到基類中去。這會進一步污染基類的接口,使它變"胖"。對象

   此外,每次基類中加入一個方法時,派生類中就必需要實現這個方法(或者定義一個默認實現)。事實上,有一種特定的相關實踐,可使派生類無需實現這些方法,該實踐的作法就是把這些接口合併爲一個基類,並在這個基類中提供接口中方法的退化實現。但這種實現違反了LSP,會帶來維護和重用方面的問題。繼承

3、分離客戶仍是分離接口

  若是強迫客戶程序依賴於那些它們不使用的方法,那麼這些客戶程序就面臨着因爲這些未使用方法的改變所帶來的變動。這無心中致使了全部客戶程序之間的耦合。換種說法,若是一個客戶程序依賴於一個含有它不使用的方法的類,可是其餘客戶程序卻確實要使用該方法,那麼當其餘客戶要求這個類改變時,就會影響到這個客戶程序。咱們但願儘量地避免這種耦合,所以咱們但願分離接口。接口

4、類接口和對象接口

  1.使用"委託"分離接口(適配器模式)程序

  2.使用多重繼承分離接口方法

5、結論

  類會致使它們的客戶程序之間產生不正常的而且有害的耦合關係。當一個程序客戶要求該胖類進行一個改動,會影響到全部其它的客戶程序。所以,客戶程序應該僅僅依賴於它們實際調用的方法。經過把胖類的接口分解爲多個特定於客戶程序的接口,能夠實現這個目標。每一個特定於客戶程序的接口僅僅聲明 它的特定客戶或者客戶組調用的那些函數。接着,該胖類就能夠繼承全部特定於客戶程序的接口,並實現它們。這就解除了客戶程序和它們沒有調用的方法間的依賴關係,並使客戶程序之間互不依賴。語言

相關文章
相關標籤/搜索