接口隔离原则

原则概述:客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上

如图中,【对象B】依赖【类D】,【对象C】依赖【类E】,但【类D】和【类E】都依赖于【接口A】。按照实现接口的规则,【类D】和【类E】都应该实现【接口A】中所有的方法。但,【类B】只需要实现接口中【function1】【function2】【function3】三个方法,【类E】则需要实现接口中的【function1】【function4】【function5】。显然两个类中都要实现不需要的方法。违背了【接口隔离原则】。

要符合【接口隔离原则】,可以通过如下修改。

interface A{void function1();
}interface B{void function2();void function3();
}interface C{void function4();void function5();
}
class D implements A,B {public void function1() {System.out.println("实现了方法1...");}public void function2() {System.out.println("实现了方法2...");}public void function3() {System.out.println("实现了方法3...");}
}class E implements A,C {public void function1() {System.out.println("实现了方法1...");}public void function4() {System.out.println("实现了方法4...");}public void function5() {System.out.println("实现了方法5...");}
}class F {public void operation1(A i) {i.function1();}public void operation2(B i) {i.function2();}public void operation3(B i) {i.function3();}
}class G {public void operation1(A i) {i.function1();}public void operation4(C i) {i.function4();}public void operation5(C i) {i.function5();}
}
public class InterfaceSegregation {public static void main(String[] args) {F f = new F();f.operation1(new D());  // F类通过接口依赖D类f.operation2(new D());f.operation3(new D());G g = new G();g.operation1(new E()); // G类通过接口依赖E类g.operation4(new E());g.operation5(new E());}
}

修改后的【UML图】如下图所示:

【设计模式】接口隔离原则相关推荐

  1. 设计模式 接口隔离原则

    设计模式 接口隔离原则 用类图说明 然后书写代码清单 public interface IPettyGirl{// 面孔public void goodLooking();// 身材public vo ...

  2. Java设计模式 - 接口隔离原则

    文章目录 1. 违反接口隔离原则 2. 遵守接口隔离原则 Interface Segregation Principle: 客户端不应该依赖它不需要的接 口,即一个类对另一个类的依赖应该建立在最小的接 ...

  3. 五、设计模式——接口隔离原则

    接口隔离原则 接口隔离原则:客户端不应该被迫依赖于它不使用的方法(要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用) 接口隔离原则和单一职责都是为了提高类的内聚 ...

  4. [设计模式]设计模式之禅关于接口隔离原则

    在讲接口隔离原则之前,先明确一下我们的主角--接口.接口分为两种: ● 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的描述 ...

  5. 接口隔离原则_设计模式六大原则

    作者:VieLei 原文:https://blog.csdn.net/s10461/article/details/53941097 在android中我们常提起的设计模式大约有23种,利用好设计模式 ...

  6. 深入浅出设计模式_深入浅出设计模式03接口隔离原则

    本文作者:开课吧寂然 图文编辑:开三金 大家好~,我是寂然~,本节课呢,我来给大家介绍设计模式原则之接口隔离原则. 话不多说,我们直接进入正题,老规矩,首先带大家了解一下接口隔离原则的官方定义,并作一 ...

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

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

  8. 接口隔离原则_设计模式之七大设计原则(上)

    这是雷总20多年前写的汇编程序,像诗一样优雅 而中国诗词讲究平仄.押韵.对仗等一系列的规则原则, 那么想要写出像诗一样优雅的程序你不得不知的 -- 设计模式之七大原则: 1.开闭原则:对修改关闭,对扩 ...

  9. 学习设计模式 - 六大基本原则之接口隔离原则

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  10. 接口隔离原则_设计模式的三大分类及六大原则

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过 ...

最新文章

  1. iframe中的奇怪现象
  2. 1.3 Integer类详解
  3. python电影名称词云_python-词云
  4. Python Django 全局上下文代码示例
  5. 来学习ansibie(1)
  6. 汉诺塔问题详细解析zufeoj
  7. C++第9周(春)项目5 - 一元一次方程类
  8. Go 把类型放在变量名后面,是特立独行还是另有机密?
  9. Git学习系列(五)分支管理详解
  10. 四、HTML标签:图片标签
  11. ruoyi第三方登入Gitee
  12. coffeescript html5,深入浅出CoffeeScript
  13. 微信收钱的盒子服务器老是断开,微信文件已过期或被清理的终极解决办法
  14. 经典神经网络论文超详细解读(八)——ResNeXt学习笔记(翻译+精读+代码复现)
  15. 如何读懂EDIFACT报文
  16. 沃尔沃升级刷藏功能取消限速180km解除行车播放视频关闭自动启停系统
  17. 寻求IOS大神,App马甲包上架Appstore
  18. 网上药店需要戴上“紧箍咒”
  19. python输入两个列表a和b、利用内置函数zip()_2nd Python基础语法
  20. 13、python网络编程之网络通信协议

热门文章

  1. zoj 3351 Bloodsucker(概率 dp)
  2. 事务内容postgresql pgbench
  3. 关于IAR的一些总结 -- ARM调试和Flash调试的区别
  4. AB1601的OTA区224K存储空间的使用注意事项
  5. R语言:异常数据处理
  6. 出块过程 (1)close发送消息
  7. (chap1 网络基础知识)网络的构成要素:(7)网关
  8. java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))
  9. 初等数论--整除--欧几里得算法/辗转相除法/更相减损术
  10. 从(0,0)到(n,n)——广度优先及其改进