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