接口隔离原则定义:

一个类对另一个类的依赖应该建立在最小的接口上,使得接口中的方法得到充分利用。

uml图:

相关代码1:

/*接口没有得到充分的利用,所以他违反了接口隔离原则。
*/public class Demo1 {public static void main(String[] args) {// TODO Auto-generated method stubA a = new A();a.depend1(new B());a.depend2(new B());a.depend3(new B());C c = new C();c.depend1(new D());c.depend4(new D());c.depend5(new D());}
}//接口
interface Interface1 {void operation1();void operation2();void operation3();void operation4();void operation5();
}class B implements Interface1 {public void operation1() {System.out.println("B 实现了 operation1");}public void operation2() {System.out.println("B 实现了 operation2");}public void operation3() {System.out.println("B 实现了 operation3");}public void operation4() {System.out.println("B 实现了 operation4");}public void operation5() {System.out.println("B 实现了 operation5");}
}class D implements Interface1 {public void operation1() {System.out.println("D 实现了 operation1");}public void operation2() {System.out.println("D 实现了 operation2");}public void operation3() {System.out.println("D 实现了 operation3");}public void operation4() {System.out.println("D 实现了 operation4");}public void operation5() {System.out.println("D 实现了 operation5");}
}class A { //A 类通过接口Interface1 依赖(使用) B类,但是只会用到1,2,3方法public void depend1(Interface1 i) {i.operation1();}public void depend2(Interface1 i) {i.operation2();}public void depend3(Interface1 i) {i.operation3();}
}class C { //C 类通过接口Interface1 依赖(使用) D类,但是只会用到1,4,5方法public void depend1(Interface1 i) {i.operation1();}public void depend4(Interface1 i) {i.operation4();}public void depend5(Interface1 i) {i.operation5();}
}

相关代码2:

/*这是修改后的代码,将原接口拆分成了三个接口,使得接口内的方法得到充分的利用,下面代码符合接口隔离原则。
*/
public class Demo1 {public static void main(String[] args) {// TODO Auto-generated method stub// 使用一把A a = new A();a.depend1(new B()); // A类通过接口去依赖B类a.depend2(new B());a.depend3(new B());C c = new C();c.depend1(new D()); // C类通过接口去依赖(使用)D类c.depend4(new D());c.depend5(new D());}}// 接口1
interface Interface1 {void operation1();}// 接口2
interface Interface2 {void operation2();void operation3();
}// 接口3
interface Interface3 {void operation4();void operation5();
}class B implements Interface1, Interface2 {public void operation1() {System.out.println("B 实现了 operation1");}public void operation2() {System.out.println("B 实现了 operation2");}public void operation3() {System.out.println("B 实现了 operation3");}}class D implements Interface1, Interface3 {public void operation1() {System.out.println("D 实现了 operation1");}public void operation4() {System.out.println("D 实现了 operation4");}public void operation5() {System.out.println("D 实现了 operation5");}
}class A { // A 类通过接口Interface1,Interface2 依赖(使用) B类,但是只会用到1,2,3方法public void depend1(Interface1 i) {i.operation1();}public void depend2(Interface2 i) {i.operation2();}public void depend3(Interface2 i) {i.operation3();}
}class C { // C 类通过接口Interface1,Interface3 依赖(使用) D类,但是只会用到1,4,5方法public void depend1(Interface1 i) {i.operation1();}public void depend4(Interface3 i) {i.operation4();}public void depend5(Interface3 i) {i.operation5();}
}

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

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

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

  2. 围观设计模式(4)--接口隔离原则(ISP,Interface Segregation Principle)

    接口隔离原则(英语:interface-segregation principles, 缩写:ISP)指明没有客户(client)应该被迫依赖于它不使用方法.接口隔离原则(ISP)拆分非常庞大臃肿的接 ...

  3. 【设计模式】接口隔离原则

    接口隔离原则 原则概述:客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上 如图中,[对象B]依赖[类D],[对象C]依赖[类E],但[类D]和[类E]都依赖于[接口A]. ...

  4. 设计模式:接口隔离原则

    定义 接口隔离原则(Interface Segregation Principle, ISP),定义为: Clients should not be forced to depend upon int ...

  5. 嘻哈说:设计模式之接口隔离原则

    1.定义 按照惯例,首先我们来看一下接口隔离原则的定义. 类间的依赖关系应该建立在最小的接口上. 接口中的方法应该尽量少,不要使接口过于臃肿,不要有很多不相关的逻辑方法. 有点类似于单一职责原则,都是 ...

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

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

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

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

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

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

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

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

最新文章

  1. 工程项目管理丁士昭第二版_2021年软考系统集成项目管理工程师知识点预习第十四章第二节...
  2. Jenkins环境搭建总结
  3. [蓝桥杯][2014年第五届真题]排列序数(思维)
  4. 2021牛客暑期多校训练营7 K-xay loves sequence(主席树+二分)
  5. 飞鸽传书:HTML界面也有它欠缺的方面
  6. 中国互联网史是一部流氓史
  7. freecplus框架-MySQL数据库操作
  8. iStream DDS
  9. Android版本升级同时Sqlite数据库的升级及之前数据的保留-转
  10. [转载]备忘:oh my zsh 的安装、更新、删除
  11. Windows XP Embedded SP2 + 简体中文语言包
  12. Qt文档阅读笔记-QCustom3DLabel使用及Q3DSurface基本信号
  13. excel打开html非常慢,excel打开速度很慢的解决方法
  14. matlab jacks信道,【学习笔记】移动无线信道理论
  15. Brain Predicted Age (二)
  16. 基于QT实现的可视化链表(单链表、循环链表、双向链表)
  17. SVG公众号排版『大尺寸背景图重复安卓不显示』解决方法
  18. TCP/IP编程之getsockopt/setsockopt函数详解
  19. html5+css3响应式布局应该考虑到的屏幕的尺寸
  20. 当前人类社会面临的人工智能安全问题有哪些?

热门文章

  1. *.lwp文件如何打开
  2. 29、光敏电阻ADC输入实验
  3. CASIA-HWDB2.x 数据集DGRL文件解析(python)
  4. 飞速创软 | 带你深入了解Iass、Pass、Sass三种云服务的区别
  5. 智能硬件产品经理跟纯APP产品经理的主要区别在哪里?
  6. el-input实现尾部加字
  7. “CSDN 2022 中国开发者影响力年度评选”正式开启报名!
  8. 嵌入式系统开发 (复习笔记)
  9. html 修改表格行背景,HTML表格标记教程(20):行的背景色属性BGCOLOR
  10. Windows下编译MICO源代码遇到的问题