文章目录

  • 一、接口隔离原则简介
  • 二、接口隔离原则代码示例 ( 反面示例 )
    • 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() {}
}

【设计模式】软件设计七大原则 ( 接口隔离原则 | 代码示例 )相关推荐

  1. 设计模式系列(二)七大设计原则-----接口隔离原则

    七大设计原则之单一接口隔离原则 接口隔离原则 案例 应用实例 改进 上一篇:设计模式系列(一)七大设计原则-----单一职责原则 下一篇:设计模式系列(三)七大设计原则-----依赖倒转原则 接口隔离 ...

  2. 设计模式原则 - 接口隔离原则(二)

    接口隔离原则 一 官方定义 二 案例演示 普通方案 案例分析 解决方案 解决方案 案例总结 三 与单一职责原则对比 一 官方定义 接口隔离原则(Interface Segregation Princi ...

  3. 设计模式(一):接口隔离原则

    实例接口:一个类就是一个实例接口.此类的所有实例都符合这个类定义的接口. 类接口:就是高级语言中的interface或纯虚类. 接口隔离原则:Clients should not be forced ...

  4. 六大设计原则-接口隔离原则

    1.开闭原则        2.接口隔离原则 3.依赖倒置原则 4.迪米特原则             5.里氏替换原则     6.单一职责原则 接口隔离原则 客户端不应该依赖它不需要的接口:一个类 ...

  5. 面向对象六大原则——接口隔离原则

    什么是接口隔离原则(Interface Segregation Principle, ISP)  接口对于Java开发者来说都不陌生,它几乎存在于每一个Java程序中,是抽象的代名词.在讲接口隔离原则 ...

  6. 设计模式-软件设计七大原则

    目录 综述 1.开闭原则 1.1开闭原则的定义 1.2开闭原则的作用 1.3开闭原则的实现方法 2.里氏替换原则 2.1里氏替换原则的定义 2.2里氏替换原则的作用 2.3里氏替换原则的实现方法 3. ...

  7. 软件设计原则——接口隔离原则

    客户端不应该被迫依赖于它不使用的方法: 一个类对另一个类的依赖应该建立在最小的接口上. [例]安全门案例 我们需要创建一个黑马品牌的安全门,该安全门具有防火.防水.防盗的功能. 可以将防火,防水,防盗 ...

  8. java设计模式之设计原则④接口隔离原则

    定义: (1)用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口. (2)一个类对一个类的依赖应该建立在最小的接口上. (3)建立单一接口,不要建立庞大臃肿的接口. (4)尽量细化 ...

  9. Java七大设计原则 - 接口隔离原则

    一.什么是 接口隔离原则 (Interface Segregation Principle) ? 原则含义: 一个类对于另外一个类的依赖应该建立在最小的接口上 1. 接口隔离原则" 实际上它 ...

最新文章

  1. 区块链将重新定义世界
  2. UVA 11259 Coin Changing Again
  3. 因 Redis 分布式锁造成的 P0 级重大事故,整个项目组被扣了绩效。。。
  4. ArcGIS三种方式打断相交线------Feature To Line工具
  5. 深入理解Oracle字符串函数Translate()
  6. 【网址收藏】podman安装及使用简单介绍
  7. html动画曲线快速结束,css3动画如何在动作结束时保持该状态不变
  8. Java堆、栈、内存分析
  9. 敏捷是如何使你跑得更快?
  10. BZOJ3435[Wc2014]紫荆花之恋——动态点分治(替罪羊式点分树套替罪羊树)
  11. PAI算法组件详解:PLDA
  12. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
  13. 编译JAVA的错误: 编码ascii的不可映射字符
  14. unity 闪烁的gui button
  15. 阿里平台上转的 数据模型架构规范
  16. Himawari8注册后发来信息下载数据
  17. 音视频数据处理入门:AAC音频码流解析
  18. PIPI OJ 1203: PIPI发工资(拓扑排序)
  19. 小武学fpgastep4
  20. 二进制安装K8S集群-上

热门文章

  1. 利用GNU的parted进行分区
  2. Java读书笔记05 类与对象
  3. POWER-BI开发版功能简介
  4. 在ubuntu10.4安装snort ACID
  5. 百度今晨7:20分“宕机”
  6. linux 命令之电子书chm格式下载
  7. Outlook通过RPC或RPC over HTTPS访问Exchane邮箱:Exchange2003系列之四
  8. Linux 搭建golang开发环境
  9. C语言第五讲,语句 顺序循环选择.
  10. MFC接收命令行参数的三种方法