六大設(shè)計原則之接口隔離原則

《代碼整潔之道》的作者Robert C.Martin于2002年給“接口隔離原則”的定義是:客戶端不應(yīng)該被迫依賴于它不使用的方法
該原則還有另外一個定義:一個類對另一個類的依賴應(yīng)該建立在最小的接口上

通常我們一個類,可能會需要實現(xiàn)很多方法,如果將這么多的方法都抽象在同一個接口上,那么就會產(chǎn)生強依賴,不利于擴展。因為別人也會想要用這個接口,但是你在接口中定義了那么多的方法,我只要想實現(xiàn)你的接口,就必須實現(xiàn)你所有的方法

接口隔離原則(Interface Segregation Principle,ISP)要求程序員盡量將臃腫龐大的接口拆分成更小的和更具體的接口,讓接口中只包含客戶感興趣的方法。

簡單一點理解就是:把一個龐大的接口根據(jù)業(yè)務(wù)場景拆分成幾個小的接口。

接口隔離是為了高內(nèi)聚、低耦合。在實際的業(yè)務(wù)開發(fā)中,通常會先定義好需要開發(fā)的接口,并由各個服務(wù)類實現(xiàn)。但如果沒有經(jīng)過考慮和設(shè)計,就很可能造成一個接口中包括眾多的接口方法,而這些接口并不一定在每一個類中都需要實現(xiàn)。這樣的接口很難維護,也不易于擴展,每一次修改驗證都有潛在的風險。

我們開發(fā)中常遇見的胖接口,就是因為不遵循接口隔離原則導致的,一個接口包含大量的接口方法,實現(xiàn)類需要實現(xiàn)所有方法,但實現(xiàn)類又不一定需要這些方法。

如下UML圖:


ISP (2).jpg

按接口隔離原則拆分:


ISP (3).jpg

在具體應(yīng)用接口隔離原則時,應(yīng)該根據(jù)以下幾個規(guī)則衡量。
·接口盡量小,但是要有限度。一個接口只服務(wù)于一個子模塊或業(yè)務(wù)邏輯。
·為依賴接口的類定制服務(wù)。只提供調(diào)用者需要的方法,屏蔽不需要的方法。
·了解環(huán)境,拒絕盲從。每個項目或產(chǎn)品都有選定的環(huán)境因素,環(huán)境不同,接口拆分的標準就不同,要深入了解業(yè)務(wù)邏輯。
·提高內(nèi)聚,減少對外交互。讓接口用最少的方法完成最多的事情。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容