接口隔离原则:

基本介绍:

1.客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上

2.先看一张图

3.类A通过Interface1依赖类B,类C通过接口Interface1依赖类D,如果接口Interface1对于类A和类C来说不是最小接口,那么类B和类D必须去实现他们不需要的方法。

4.按照接口隔离的原则应当这样处理:

将接口Interface1拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系,依旧是采用接口隔离的原则。

案例:

1.接口及实现

package segregation;public class InterfaceSegregationPrinciple {public static void main(String[] args) {}}interface Interface1{void operation1();void operation2();void operation3();void operation4();void operation5();
}class B implements Interface1{@Overridepublic void operation1() {System.err.println("B 实现了 operation1");}@Overridepublic void operation2() {System.err.println("B 实现了 operation2");}@Overridepublic void operation3() {System.err.println("B 实现了 operation3");}@Overridepublic void operation4() {System.err.println("B 实现了 operation4");}@Overridepublic void operation5() {System.err.println("B 实现了 operation5");}
}class D implements Interface1{@Overridepublic void operation1() {System.err.println("D 实现了 operation1");}@Overridepublic void operation2() {System.err.println("D 实现了 operation2");}@Overridepublic void operation3() {System.err.println("D 实现了 operation3");}@Overridepublic void operation4() {System.err.println("D 实现了 operation4");}@Overridepublic void operation5() {System.err.println("D 实现了 operation5");}
}class A {public void dependence1(Interface1 i){i.operation1();}public void dependence2(Interface1 i){i.operation2();}public void dependence3(Interface1 i){i.operation3();}
}class C{public void dependence1(Interface1 i){i.operation1();}public void dependence4(Interface1 i){i.operation4();}public void dependence5(Interface1 i){i.operation5();}
}

应传统方法的问题和使用接口隔离原则改进:

1)类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类D,如果接口Interface1对于类A和类C来说不是最小接口,那么类和类D必须去实现他们不需要的方法。

2)将接口Interface1拆分为独立几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。

3)接口Interface1中出现的方法,根据实际情况拆分为三个接口

2.案例2:

类图如下:

package segregation.improve;public class InterfaceSegregationPrinciple {public static void main(String[] args) {A a = new A();//A类通过接口依赖(使用)B类a.dependence1(new B());C c = new C();c.dependence1(new D());}}interface Interface1{void operation1();
}
interface Interface2{void operation2();void operation3();
}
interface Interface3{void operation4();void operation5();
}class B implements Interface1,Interface2{@Overridepublic void operation1() {System.err.println("B 实现了 operation1");}@Overridepublic void operation2() {System.err.println("B 实现了 operation2");}@Overridepublic void operation3() {System.err.println("B 实现了 operation3");}
}class D implements Interface1,Interface3{@Overridepublic void operation1() {System.err.println("D 实现了 operation1");}@Overridepublic void operation4() {System.err.println("D 实现了 operation4");}@Overridepublic void operation5() {System.err.println("D 实现了 operation5");}
}class A {public void dependence1(Interface1 i){i.operation1();}public void dependence2(Interface2 i){i.operation2();}public void dependence3(Interface2 i){i.operation3();}
}class C{public void dependence1(Interface1 i){i.operation1();}public void dependence4(Interface3 i){i.operation4();}public void dependence5(Interface3 i){i.operation5();}
}

设计模式的七大设计原则:其二:接口隔离原则相关推荐

  1. 七大设计原则之接口隔离原则应用

    目录 1 接口隔离原则介绍 2 接口隔离原则应用 1 接口隔离原则介绍 接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接 ...

  2. 软件设计原则之接口隔离原则、合成复用原则、迪米特原则

    系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...

  3. 六大设计原则之接口隔离原则

    接口隔离原则定义 接口隔离有两种定义: Clients should not be forced to depend upon interfaces that they don't use. 客户端不 ...

  4. 面向对象编程原则(07)——接口隔离原则

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 参考资料 <大话设计模式> 作者:程杰 <Java设计模式> 作者:刘 ...

  5. 单一职责原则和接口隔离原则区别的理解

    网上对于两者的区别众说纷纭,总是一套理论下来跟没有说一样,下面说说自己的理解:  单一职责原则: 是将某一职责的方法全放在一个接口中,这时候就会出现实现该接口的类必须实现该接口中自己用不到的方法(违背 ...

  6. 面向对象的六大原则之 接口隔离原则——ISP

    ISP = Interface Segregation Principle ISP的定义如下: 1.客户端不应该依赖他不需要的接口 2.一个类对另外一个类的依赖性应该是建立在最小的接口上 3.不应当将 ...

  7. Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)

    1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...

  8. 七大设计原则之接口隔离原则

    一.接口隔离原则介绍 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上.初看这个定义,让人摸不着头脑,我们看一个类图,看如下图所示: 类A通过接口Interface1依赖 ...

  9. 深入浅出设计模式原则之接口隔离原则(ISP)

    下面以学生成绩管理程序为例介绍接口隔离原则的应用(工程源码). 分析:学生成绩管理程序一般包含插入成绩.删除成绩.修改成绩.计算总分.计算均分.打印成绩信息.査询成绩信息等功能,如果将这些功能全部放到 ...

  10. 软件设计模式六大原则之四接口隔离原则(PHP语言实现)

    转载,原文链接https://www.cnblogs.com/zhanghengscnc/p/8299459.html 定义:客户端不应该依赖它不需要的接口:一个类对另一个类的依赖应该建立在最小的接口 ...

最新文章

  1. 21世纪20年代改变世界的十大趋势
  2. python使用缩进来体现代码之间的逻辑关系-Python 使用缩进来体现代码之间的逻辑关系 ....
  3. 【poj2114】点分治(离线)
  4. 网络基础之 Nmap 命令
  5. 改进版的CBOW模型
  6. ICE学习之C# Java之间通讯
  7. 坐标定位手机元素_CSS 是如何影响浏览器元素在文档中的排列?
  8. linux平台下MongoDB安装和环境搭建及踩过的坑
  9. python3.6 与MYSQL的安装与连接
  10. python安装csv出错_python处理csv文件问题解决贴
  11. YOLO系列专题——YOLOv1理论篇
  12. 【震撼】《京东技术解密》获众大神集体推荐,4千人10年经验一次放送
  13. NSString的长度比较方法(一)
  14. 使用bash编写Linux shell脚本--调试和版本控制
  15. ISO19000-2000标准(转载)
  16. TDD测试驱动开发案例【水货】
  17. AI 赋能安全技术总结与展望
  18. vue+element在IE中遇到的问题
  19. word转pdf时,图片错位,乱跑
  20. 我好像解决部分猫盘刷群晖后掉IP的问题了

热门文章

  1. C语言把浮点数转换为字符串
  2. 考研数学三考摆线吗_考研数学草稿纸发几张?可以多打几张准考证当草稿纸用吗?...
  3. Linux学习总结(61)——Ansible 快速入门学习
  4. Docker学习总结(31)——使用Maven插件构建docker镜像
  5. Mysql学习总结(42)——MySql常用脚本大全
  6. mysql 登录默认实例_【MySQL案例】mysql本机登录-S失灵_mysql
  7. stm08S单片机C语言编,STM8S单片机入门1(开发环境搭建)
  8. laravel常用命令整理
  9. 比特币技术公司创始人:ICO是一场被骗子玩弄的网络泡沫
  10. asp.net 性能调较