設計模式六大原則4---》介面隔離原則
阿新 • • 發佈:2019-01-30
定義:客戶端不應該依賴它不需要的介面;一個類對另一個類的依賴應該建立在最小的介面上;問題由來:類A通過介面I依賴B,類C通過介面I依賴D,如果介面I對於類A和類B來說不是最小介面,則類B和類D必須去實現他們不需要的方法。解決方案:將臃腫的介面I拆分為獨立的幾個介面,類A和類C分別與他們需要的介面建立依賴關係。也就是採用介面隔離原則。舉例說明隔離原則:這個圖的意思是:類A依賴介面I中的方法1、方法2、方法3,類B是對類A依賴的實現,類C依賴介面I中的方法 1、方法4、方法5,類D是對類C依賴的實現。對於類B和類D來說,雖然他們都存在著用不到的方法,但由於實現了介面I,所以也必須要實現這些用不到的方法。通過優化,可以把介面拆分成三個介面,拆分後的介面可以使用類根據需要去實現:介面隔離原則的含義是:建立單一介面,不要建立龐大臃腫的介面,儘量細化介面,介面中的方法儘量少。也就是說,我們要為各個類建立專用的介面,而不要試圖去建立一個很龐大的介面供所有依賴它的類去呼叫。本例中,將一個龐大的介面拆分成3個專用的介面所採用的原則就是隔離原則。在程式設計中,依賴幾個專用的介面要比依賴一個綜合的介面更加的靈活。介面是設計對外部設定的“契約”,通過分散定義多個介面,可以預防外來變更的擴散,提高系統的靈活性和可維護性。說到這裡,很多人會覺得介面隔離原則跟之前的單一職責原則很相似,其實不然。其一,單一職責原則注重的是職責;而介面隔離原則注重對介面依賴的隔離。其二,單一職責原則主要是約束類,其次才是介面和方法,它針對的是程式中的實現和細節;而介面隔離原則主要約束介面,主要針對物件,針對程式整體框架的構建。採用介面隔離原則注意點如下:1.介面儘量小,但是要有限度。對介面進行細化可以提高程式設計靈活性是不爭的事實,但是如果多小,則會造成介面數量很多,使設計複雜化,所以一定要適度。2.依賴介面的類定製服務,只暴露給呼叫的類他需要的方法,它不需要的方法則隱藏起來。只有專注地為一個模組提供定製服務,才能建立最小的依賴關係。3.提供內聚,減少對外的互動。使介面用最少的方法去完成最多的事情。