Java设计原则——接口隔离原则
我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习。
学习从来无捷径,循序渐进登高峰。
目录
- 一、基本介绍
- 二、应用实例
- 1、示例一
- 2、示例二
- 三、接口隔离原则
一、基本介绍
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
二、应用实例
类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。
1、示例一
interface I {public void method1();public void method2();public void method3();public void method4();public void method5();
}class A{public void depend1(I i){i.method1();}public void depend2(I i){i.method2();}public void depend3(I i){i.method3();}
}class B implements I{public void method1() {System.out.println("类B实现接口I的方法1");}public void method2() {System.out.println("类B实现接口I的方法2");}public void method3() {System.out.println("类B实现接口I的方法3");}//对于类B来说,method4和method5不是必需的,但是由于接口A中有这两个方法,//所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。public void method4() {}public void method5() {}
}class C{public void depend1(I i){i.method1();}public void depend2(I i){i.method4();}public void depend3(I i){i.method5();}
}class D implements I{public void method1() {System.out.println("类D实现接口I的方法1");}//对于类D来说,method2和method3不是必需的,但是由于接口A中有这两个方法,//所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。public void method2() {}public void method3() {}public void method4() {System.out.println("类D实现接口I的方法4");}public void method5() {System.out.println("类D实现接口I的方法5");}
}public class Client{public static void main(String[] args){A a = new A();a.depend1(new B());a.depend2(new B());a.depend3(new B());C c = new C();c.depend1(new D());c.depend2(new D());c.depend3(new D());}
}
2、示例二
将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。
interface I1 {public void method1();
}interface I2 {public void method2();public void method3();
}interface I3 {public void method4();public void method5();
}class A{public void depend1(I1 i){i.method1();}public void depend2(I2 i){i.method2();}public void depend3(I2 i){i.method3();}
}class B implements I1, I2{public void method1() {System.out.println("类B实现接口I1的方法1");}public void method2() {System.out.println("类B实现接口I2的方法2");}public void method3() {System.out.println("类B实现接口I2的方法3");}
}class C{public void depend1(I1 i){i.method1();}public void depend2(I3 i){i.method4();}public void depend3(I3 i){i.method5();}
}class D implements I1, I3{public void method1() {System.out.println("类D实现接口I1的方法1");}public void method4() {System.out.println("类D实现接口I3的方法4");}public void method5() {System.out.println("类D实现接口I3的方法5");}
}
三、接口隔离原则
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口
,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。在程序设计中,依赖几个专用的接口要比依赖一个综合的接口更灵活
。接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
Java设计原则——接口隔离原则相关推荐
- 【设计模式】软件设计七大原则 ( 接口隔离原则 | 代码示例 )
文章目录 一.接口隔离原则简介 二.接口隔离原则代码示例 ( 反面示例 ) 1.接口定义 ( 接口臃肿 ) 2.实现类 1 3.实现类 2 三.接口隔离原则代码示例 ( 推荐用法 ) 1.接口 1 2 ...
- 设计模式系列(二)七大设计原则-----接口隔离原则
七大设计原则之单一接口隔离原则 接口隔离原则 案例 应用实例 改进 上一篇:设计模式系列(一)七大设计原则-----单一职责原则 下一篇:设计模式系列(三)七大设计原则-----依赖倒转原则 接口隔离 ...
- 六大设计原则-接口隔离原则
1.开闭原则 2.接口隔离原则 3.依赖倒置原则 4.迪米特原则 5.里氏替换原则 6.单一职责原则 接口隔离原则 客户端不应该依赖它不需要的接口:一个类 ...
- java设计模式之设计原则④接口隔离原则
定义: (1)用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口. (2)一个类对一个类的依赖应该建立在最小的接口上. (3)建立单一接口,不要建立庞大臃肿的接口. (4)尽量细化 ...
- Java七大设计原则 - 接口隔离原则
一.什么是 接口隔离原则 (Interface Segregation Principle) ? 原则含义: 一个类对于另外一个类的依赖应该建立在最小的接口上 1. 接口隔离原则" 实际上它 ...
- 软件设计原则——接口隔离原则
客户端不应该被迫依赖于它不使用的方法: 一个类对另一个类的依赖应该建立在最小的接口上. [例]安全门案例 我们需要创建一个黑马品牌的安全门,该安全门具有防火.防水.防盗的功能. 可以将防火,防水,防盗 ...
- 设计原则——接口隔离原则
1.全称 Interface Segregation Principle 缩写为:ISP 2.解释 要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法 单一职责原 ...
- 设计原则(单一职责原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则)
设计原则 单一职责原则(SRP) 从三大特性角度看原则: 应用的设计模式: 开放封闭原则(OCP) 从三大特性角度看原则: 应用的设计模式: 里氏替换原则(LSP) 从三大特性角度看原则: 应用的设计 ...
- Java设计模式七大原则-接口隔离原则
接口隔离原则(Interface Segregation Principle) 基本介绍 1) 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上 2) 先看一张图: 类A ...
- 面向对象六大原则——接口隔离原则
什么是接口隔离原则(Interface Segregation Principle, ISP) 接口对于Java开发者来说都不陌生,它几乎存在于每一个Java程序中,是抽象的代名词.在讲接口隔离原则 ...
最新文章
- 王道考研 计算机网络笔记 第五章:传输层
- Oracle-Oracle数据库结构
- LeetCode Best Time to Buy and Sell Stock II
- 皇牌空战无限服务器,《皇牌空战:无限》正式停服 一个搏击长空的时代终结[多图]...
- eShopOnContainers 知多少[7]:Basket microservice
- java 两个窗口 贴_粘贴子窗体中的多个记录时的子窗体校准错误
- springboot 自定义注解开发
- string和StringBuilder的选择
- jsp 使用base标签 没有作用_tag标签的概念,如何设置使用,它对网站seo优化有何作用...
- C++类的构造函数、析构函数与赋值函数
- mcp证书有什么用_初级会计职称有什么用?考下证书可以做什么工作?
- 在Ubuntu搭建网站环境问题记录
- 任务调度的合理性 (25 分)(拓扑排序)
- c#访问其他服务器的共享文件夹,C#实现访问网络共享文件夹
- ssh “Missing privilege separation directory: /run/sshd“
- hardfault常见原因_stm32 HardFault_Handler调试及问题查找方法
- 单位圆的面积为π,因此可以通过求单位圆面积的近似值来求π的近似值
- 第十一届蓝桥杯省赛:纪念日
- ClickHouse函数操作大全
- Linux从入门到入狱-01