定義
客戶端不應(yīng)該依賴它不需要的接口锹淌;一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該建立在最小的接口上。
問(wèn)題由來(lái)
類A通過(guò)接口I依賴類B,類C通過(guò)接口I依賴類D订讼,如果接口I對(duì)于類A和類B來(lái)說(shuō)不是最小接口,則類B和類D必須去實(shí)現(xiàn)他們不需要的方法扇苞。
uml
解決辦法
將臃腫的接口I拆分為獨(dú)立的幾個(gè)接口欺殿,類A和類C分別與他們需要的接口建立依賴關(guān)系。也就是采用接口隔離原則鳖敷。
uml
補(bǔ)充
說(shuō)到這里祈餐,很多人會(huì)覺(jué)的接口隔離原則跟之前的單一職責(zé)原則很相似,其實(shí)不然哄陶。
- 其一帆阳,單一職責(zé)原則原注重的是職責(zé);而接口隔離原則注重對(duì)接口依賴的隔離。
- 其二蜒谤,單一職責(zé)原則主要是約束類山宾,其次才是接口和方法,它針對(duì)的是程序中的實(shí)現(xiàn)和細(xì)節(jié)鳍徽;而接口隔離原則主要約束接口接口资锰,主要針對(duì)抽象,針對(duì)程序整體框架的構(gòu)建阶祭。