以前,我们研究了liskov替代原理。 下一个原则是接口隔离 。 接口隔离原则(ISP)指出,不应强迫任何客户端依赖其不使用的方法。

想象一下一个接口,在我们的代码库中有很多方法,尽管只有一部分方法被实现,但我们的许多类都实现了该接口。

在我们的案例中,运动员界面是一个包含运动员某些动作的界面。

package com.gkatzioura.solid.segragation;public interface Athlete {void compete();void swim();void highJump();void longJump();}

我们添加了比赛方法,但还添加了一些额外的方法,例如游泳highJump和longJump。
假设JohnDoe是一名游泳运动员。 通过实现Athlete接口,我们必须实现JohnDoe永远不会使用的诸如highJump和longJump之类的方法。

package com.gkatzioura.solid.segragation;public class JohnDoe implements Athlete {@Override public void compete() {System.out.println("John Doe started competing");}@Override public void swim() {System.out.println("John Doe started swimming");}@Override public void highJump() {}@Override public void longJump() {}
}

对于可能是田径运动员跳高和跳远比赛的另一位运动员,也会出现相同的问题。
我们将遵循界面隔离原则,并且将重构原始界面,并创建另外两个界面,一个用于跳跃运动员,另一个用于游泳运动员。

package com.gkatzioura.solid.segragation;public interface SwimmingAthlete extends Athlete {void swim();}
package com.gkatzioura.solid.segragation;public interface JumpingAthlete extends Athlete {void highJump();void longJump();}

因此,John Doe不必执行他无法执行的动作。

package com.gkatzioura.solid.segragation;public class JohnDoe implements SwimmingAthlete {@Overridepublic void compete() {System.out.println("John Doe started competing");}@Overridepublic void swim() {System.out.println("John Doe started swimming");}}

您可以在github上找到源代码。 最后一个原则是依赖倒置原则。

另外,我还编写了备忘单,其中包含一些扎实的原则。
在链接中注册以接收它。

翻译自: https://www.javacodegeeks.com/2018/02/solid-principles-interface-segregation-principle.html

坚实原则:接口隔离原则相关推荐

  1. 【设计模式】软件设计七大原则 ( 接口隔离原则 | 代码示例 )

    文章目录 一.接口隔离原则简介 二.接口隔离原则代码示例 ( 反面示例 ) 1.接口定义 ( 接口臃肿 ) 2.实现类 1 3.实现类 2 三.接口隔离原则代码示例 ( 推荐用法 ) 1.接口 1 2 ...

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

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

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

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

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

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

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

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

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

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

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

    1.全称 Interface Segregation Principle 缩写为:ISP 2.解释 要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法 单一职责原 ...

  8. 设计原则(单一职责原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则)

    设计原则 单一职责原则(SRP) 从三大特性角度看原则: 应用的设计模式: 开放封闭原则(OCP) 从三大特性角度看原则: 应用的设计模式: 里氏替换原则(LSP) 从三大特性角度看原则: 应用的设计 ...

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

    接口隔离原则(Interface Segregation Principle) 基本介绍 1) 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上 2) 先看一张图: 类A ...

  10. 六大设计模式原则-接口隔离原则

    一.接口隔离原则定义 接口隔离原则定义如下: 接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些 ...

最新文章

  1. Windows下的cmd小技巧
  2. java基础知识讲解(一)数据类型和运算符
  3. python同时输入多个变量_python同时给多个变量赋值|python3教程|python入门|python教程...
  4. MDI窗体简单方法(调用,闪屏)
  5. MySQL数据库安装Version5.7.25
  6. 举例让抽象问题具体化:二叉搜索树的后序遍历序列
  7. 经营公司最核心的是经营员工的人生
  8. Oracle数据库中文乱码问题解决
  9. 利用工具,促进有效沟通
  10. 数据库系统工程师教程 (第三版)前言
  11. 什么平板电脑能够用来编程
  12. 【微处理器】基于FPGA的微处理器VHDL开发
  13. java毕业设计视频点播系统Mybatis+系统+数据库+调试部署
  14. 计算机辅助设计的英语缩写是什么,计算机辅助设计的英文缩写是什么
  15. WIN7截图工具灵活使用
  16. matlab数字信号处理(1)——正弦信号生成与时域分析
  17. python 跳跃游戏
  18. Google左侧排名优化
  19. 速卖通教你如何提升店铺转化率——测评补单
  20. 相似度80%,Apache 孵化项目 StreamPark被公然抄袭!

热门文章

  1. 11、mysql数据表中数据的查询(3)
  2. Java IO: 字节和字符数组
  3. java异常捕获的一点感悟
  4. 优秀 Java 程序员写代码的风格
  5. TypeError: Cannot set property 'msg' of undefined
  6. 【最全最详细】使用publiccms实现动态可维护的导航菜单栏
  7. 走的走的居然飞起来了……
  8. ssm使用全注解实现增删改查案例——Dept
  9. 使用java交换两个数——CSDN博客
  10. linux挂载多个目录下,linux – 如何在centos上使用nfs4挂载多个文件夹?