客户端不应该被迫依赖于它不使用的方法;

一个类对另一个类的依赖应该建立在最小的接口上。



【例】安全门案例

我们需要创建一个黑马品牌的安全门,该安全门具有防火、防水、防盗的功能。

可以将防火,防水,防盗功能提取成一个接口,形成一套规范。

类图如下:

SafetyDoor.java

package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: SafetyDoor* @Description: 安全门接口* @Author: dym*/
public interface SafetyDoor {//防盗void antiTheft();//防火void fireProof();//防水void waterProof();
}

HeimaSafetyDoor.java

package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: HeimaSafetyDoor* @Description: 黑马品牌的安全门* @Author: dym*/
public class HeimaSafetyDoor implements SafetyDoor {public void antiTheft() {System.out.println("防盗");}public void fireProof() {System.out.println("防火");}public void waterProof() {System.out.println("防水");}
}

Client.java

package com.itheima.principles.demo4.before;/*** @version v1.0* @ClassName: Client* @Description: TODO(一句话描述该类的功能)* @Author: dym*/
public class Client {public static void main(String[] args) {HeimaSafetyDoor door = new HeimaSafetyDoor();door.antiTheft();door.fireProof();door.waterProof();}
}



上面的设计我们发现了它存在的问题,黑马品牌的安全门具有防盗,防水,防火的功能。

现在如果我们还需要再创建一个传智品牌的安全门,而该安全门只具有防盗、防水功能呢?

很显然如果实现SafetyDoor接口就违背了接口隔离原则,那么我们如何进行修改呢?

看如下类图:

AntiTheft.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: AntiTheft* @Description: 防盗接口* @Author: dym*/
public interface AntiTheft {void antiTheft();
}

Fireproof.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: Fireproof* @Description: 防火接口* @Author: dym*/
public interface Fireproof {void fireproof();
}

Waterproof.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: Waterproof* @Description: 防水接口* @Author: dym*/
public interface Waterproof {void waterproof();
}

HeiMaSafetyDoor.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: HeiMaSafetyDoor* @Description: TODO(一句话描述该类的功能)* @Author: dym*/
public class HeiMaSafetyDoor implements AntiTheft,Fireproof,Waterproof {public void antiTheft() {System.out.println("防盗");}public void fireproof() {System.out.println("防火");}public void waterproof() {System.out.println("防水");}
}

ItcastSafetyDoor.java

package com.itheima.principles.demo4.after;/*** @version v1.0* @ClassName: ItcastSafetyDoor* @Description: 传智安全门* @Author: dym*/
public class ItcastSafetyDoor implements AntiTheft,Fireproof {public void antiTheft() {System.out.println("防盗");}public void fireproof() {System.out.println("防火");}
}

Client.java

package com.itheima.principles.demo4.after;import com.itheima.principles.demo4.before.HeimaSafetyDoor;/*** @version v1.0* @ClassName: Client* @Description: TODO(一句话描述该类的功能)* @Author: dym*/
public class Client {public static void main(String[] args) {//创建黑马安全门对象HeimaSafetyDoor door = new HeimaSafetyDoor();//调用功能door.antiTheft();door.fireProof();door.waterProof();System.out.println("============");//创建传智安全门对象ItcastSafetyDoor door1 = new ItcastSafetyDoor();//调用功能door1.antiTheft();door1.fireproof();}
}

软件设计原则——接口隔离原则相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 2021-08-05 Ubuntu18.04安装ROS出现的一些问题
  2. JS URL 编码 PHP 解码{%u5F00%u53D1}
  3. Cassandra 单机入门例子——有索引
  4. python安装虚拟环境没有activate_Python venv虚拟环境:Activate命令的作用
  5. 黄仁勋登上《时代周刊》2021年度全球具影响力人物
  6. html 获得文本节点,JavaScript获取节点——获取文本节点
  7. LinearLayout和RelativeLayout 区别
  8. 数学--数论-- HDU6298 Maximum Multiple 打表找规律
  9. [react] React怎么判断什么时候重新渲染组件呢
  10. [css] 如何自定义radio按钮的样式
  11. Nature子刊:中科院动物所合作揭示灵长类血管衰老的驱动力
  12. javascript实现页面中回到顶部功能
  13. 论文笔记(3):STC: A Simple to Complex Framework for Weakly-supervised Semantic Segmentation
  14. maven部署项目到tomcat8中
  15. css总常用的font-family
  16. clover如何使用UEFI引导和EFI驱动选择
  17. Java画图板界面上的添加
  18. 一个月薪5k+的广州安全服务实习生的真实生活
  19. Java多态中的 向上转型/向下转型
  20. 2022深圳国际医疗器械展览会

热门文章

  1. learning scala read from file
  2. 深入理解乐观锁与悲观锁
  3. UML Design Via Visual Studio-Sequence Diagram
  4. RHEL(RedHat Enterprise Linux)5/6 ISO镜像下载
  5. php 接口curl,php中接口强大之处php_curl
  6. css实现文本超出两行隐藏
  7. 第二课unit11 系统恢复技术
  8. EBCDIK,EBCDIC,ASCII,shift JIS間の変換
  9. PHP网站安装程序的原理及代码
  10. CentOS下的账户管理