【设计模式】软件设计七大原则 ( 接口隔离原则 | 代码示例 )
文章目錄
- 一、接口隔離原則簡(jiǎn)介
- 二、接口隔離原則代碼示例 ( 反面示例 )
- 1、接口定義 ( 接口臃腫 )
- 2、實(shí)現(xiàn)類(lèi) 1
- 3、實(shí)現(xiàn)類(lèi) 2
- 三、接口隔離原則代碼示例 ( 推薦用法 )
- 1、接口 1
- 2、接口 2
- 3、接口 3
- 4、接口 4
- 5、實(shí)現(xiàn)類(lèi)
一、接口隔離原則簡(jiǎn)介
接口隔離原則 : 用 多個(gè) 專(zhuān)門(mén)的 接口 , 不使用 單一 的總接口 , 客戶(hù)端 不應(yīng)該依賴(lài) 它 不需要的 接口 ;
一個(gè)類(lèi) 對(duì) 另一個(gè)類(lèi) 的依賴(lài) , 應(yīng)該建立在 最小接口 上 ; 如果 有一個(gè) 大接口 , 里面有 很多方法 , 如果使用一個(gè)類(lèi) 實(shí)現(xiàn)該接口 , 所有的類(lèi)都要實(shí)現(xiàn) ;
建立 功能 單一接口 , 不要建立 龐大 臃腫 的接口 ;
盡量細(xì)化接口 , 接口中的方法盡量少 ;
接口設(shè)計(jì)適度原則 : 接口隔離原則 中 最重要的就是 注意 適度原則 , 一定要適度 ;
接口設(shè)計(jì)的 過(guò)大 , 過(guò)小 , 都不合適 ; 設(shè)計(jì)接口時(shí) , 多花時(shí)間去思考策劃 ;
接口方法 盡量少 , 但要有限度 , 對(duì)接口進(jìn)行細(xì)化 , 肯定能 提高系統(tǒng)設(shè)計(jì)的靈活性 , 但是如果 接口設(shè)計(jì)的過(guò)小 , 方法過(guò)少 , 則會(huì) 造成接口數(shù)量過(guò)多 , 提高整個(gè)程序設(shè)計(jì)的復(fù)雜性 ;
接口隔離原則 優(yōu)點(diǎn) : 符合 高內(nèi)聚 , 低耦合 的 設(shè)計(jì)思想 , 使得類(lèi)具有很好的 可讀性 , 可擴(kuò)展性 , 可維護(hù)性 ;
-
降低耦合 : 平時(shí)設(shè)計(jì)接口時(shí) , 只暴露客戶(hù)端需要的方法 , 客戶(hù)端不需要的方法 , 直接隱藏起來(lái) ; 只有專(zhuān)注的為一個(gè)模塊提供定制服務(wù) , 才能 建立最小的依賴(lài)關(guān)系 , 這樣就降低了耦合程度 ;
-
提高內(nèi)聚 : 減少對(duì)外交互 , 使用接口中最少的方法 , 完成最多的事情 ;
實(shí)際開(kāi)發(fā)中 , 實(shí)踐接口隔離原則時(shí) , 也要根據(jù)業(yè)務(wù)場(chǎng)景 , 業(yè)務(wù)模型 , 以及以后有可能會(huì)發(fā)生變更的地方 , 對(duì)于這些做一些預(yù)判 , 抽象出業(yè)務(wù)模型很重要 ;
二、接口隔離原則代碼示例 ( 反面示例 )
1、接口定義 ( 接口臃腫 )
package interfacesegregation;/*** 動(dòng)物行為接口* 該接口中聲明的方法過(guò)多 , 方法分屬于不同的類(lèi)型* 該接口可以進(jìn)一步細(xì)化*/ public interface IAnimationAction {void eat();void fly();void walk();void swim(); }
2、實(shí)現(xiàn)類(lèi) 1
package interfacesegregation;/*** 定義 Dog 類(lèi) , 實(shí)現(xiàn) IAnimationAction 接口* 需要實(shí)現(xiàn)該接口下的所有方法* 很明顯狗不能飛 , fly 方法只能空著 , 沒(méi)有實(shí)際意義*/ public class Dog implements IAnimationAction {@Overridepublic void eat() {}@Overridepublic void fly() {}@Overridepublic void walk() {}@Overridepublic void swim() {} }
3、實(shí)現(xiàn)類(lèi) 2
package interfacesegregation;/*** 定義 Bird 類(lèi) , 實(shí)現(xiàn) IAnimationAction 接口* 需要實(shí)現(xiàn)該接口下的所有方法* 很明顯鳥(niǎo)不能游泳 , swim 方法只能空著 , 沒(méi)有實(shí)際意義*/ public class Bird implements IAnimationAction {@Overridepublic void eat() {}@Overridepublic void fly() {}@Overridepublic void walk() {}@Overridepublic void swim() {} }
三、接口隔離原則代碼示例 ( 推薦用法 )
1、接口 1
package interfacesegregation;public interface IEatAnimalAction {void eat(); }
2、接口 2
package interfacesegregation;public interface IFlyAnimalAction {void fly(); }
3、接口 3
package interfacesegregation;public interface ISwimAnimalAction {void swim(); }
4、接口 4
package interfacesegregation;public interface IWalkAnimalAction {void walk(); }
5、實(shí)現(xiàn)類(lèi)
package interfacesegregation;/*** 狗可以 吃 / 走路 / 游泳* 這里直接繼承 3 個(gè)對(duì)應(yīng)的接口* 并實(shí)現(xiàn)接口中的方法** 細(xì)粒度接口可以組裝 , 粗粒度接口無(wú)法拆分*/ public class Dog implements IEatAnimalAction,IWalkAnimalAction,ISwimAnimalAction {@Overridepublic void eat() {}@Overridepublic void swim() {}@Overridepublic void walk() {} }
總結(jié)
以上是生活随笔為你收集整理的【设计模式】软件设计七大原则 ( 接口隔离原则 | 代码示例 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【设计模式】软件设计七大原则 ( 依赖倒
- 下一篇: 【设计模式】软件设计七大原则 ( 里氏替