六大设计原则详解(4)-接口隔离原则
来源:互联网 发布:淘宝宝贝手机短链接 编辑:程序博客网 时间:2024/05/20 18:48
Android学习资源分享合集(1)-视频资源
简介:
接口隔离原则(Interface Segregation Principle ),客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
从定义上总结起来,要建立单一的接口,并且接口里的方法越少越好,这里说的接口指的是类接口,也就是Interface关键字定义的接口。
接口隔离原则和单一职责原则的区别:
单一职责原则指的是类、接口和方法的职责是单一的,强调的是职责,也就是说在一个接口里,只要职责是单一的,有10个方法也是可以的。
接口隔离原则指的是在接口中的方法尽量越来越少,接口隔离原则的前提必须先符合单一职责,在单一职责的前提下,接口尽量是单一接口。
下面用实例来说明一下
一.接口臃肿实例
1.首先定义一个接口,声明体育课可以玩的球类
public interface PEclass_Ball { public void PlayBasketball(); public void PlayFootball(); public void PlayVolleyball();}
2.学生去实现(实现类)
public class Students implements PEclass_Ball { @Override public void PlayBasketball() { System.out.println("可以打篮球"); } @Override public void PlayFootball() { System.out.println("可以踢足球"); } @Override public void PlayVolleyball() { System.out.println("可以打排球"); } @Override public void PlayPlaytabletennis() { System.out.println("可以打乒乓球"); }}
场景中声明了体育课可以玩四种球,现在改变一下,体育课只能打篮球,如果还是按照此接口写的话,其他的三个方法都是空的。代码如下:
public class Students implements PEclass_Ball { @Override public void PlayBasketball() { System.out.println("可以打篮球"); } @Override public void PlayFootball() { } @Override public void PlayVolleyball() { } @Override public void PlayPlaytabletennis() { }}
二.拆分接口实例
给实例1增加一个场景,如果我们体育课,男生只踢足球和打篮球,女生打排球和乒乓球,这种情况我们要拆分接口。
public interface ball_1 { public void PlayBasketball(); public void PlayFootball(); }
public interface ball_2 { public void PlayVolleyball(); public void PlayPlaytabletennis();}
上面两个实例其实都反应的是一个问题,接口不能太过臃肿,根据接口隔离原则,应该建立单一接口。
总结:
(1). 接口要尽量小
这是接口隔离原则的核心定义,不出现臃肿的接口(Fat Interface),但是“小”是有限度的,首先就是不能违反单一职责原则。
根据接口隔离原则拆分接口时,首先必须满足单一职责原则。
(2). 接口要高内聚
高内聚就是要提高接口、类、模块的处理能力,减少对外的交互。
具体到接口隔离原则就是,要求在接口中尽量少公布public方法,接口是对外的承诺,承诺地越少对系统开发越有利,变更的风险也就越少,同时也有利于降低成本。
(3). 定制服务
定制服务就是单独为一个个体提供优良的服务。
(4). 接口设计是有限度的
接口的设计粒度越小,系统越灵活,这是不争的事实。但是,灵活的同时也带来了结构的复杂化,开发难度增加,可维护性降低,这不是一个项目或产品所期望看到的,所以接口设计一定要注意适度,这个度只能根据经验和常识判断,没有一个固化或可测量的标准。
最后我想说,一本书,我们看得懂不一定能说出来,能说出来不一定能写出来,多写写一定有收获!
我的公众号如下,希望大家多多支持:
- 六大设计原则详解(4)-接口隔离原则
- 设计模式六大原则:接口隔离原则
- 设计模式六大原则:接口隔离原则
- 设计模式六大原则----------接口隔离原则
- 六大设计原则之接口隔离原则
- 六大设计原则,接口隔离原则
- Java六大设计原则-接口隔离原则
- 设计模式六大原则-接口隔离原则
- 设计六大原则之接口隔离原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则4—接口隔离原则
- windows下nginx安装、配置与使用
- 在LINUX中如何把2个文件中的内容合到另一个文件中
- ifix5.8安全(用户权限)和错误排查
- 蓝牙通信(一)
- 对于多复杂数据的插值最优方法---拉格朗日插值法。
- 六大设计原则详解(4)-接口隔离原则
- CRC32 在 java中使用
- 23种设计模式(12):策略模式
- Alpha、Beta、RC、GA版本的区别
- scp命令使用说明
- Spring IOC
- java 获取数据类型getClass()
- 揭秘互联网空手套白狼的灰色项目
- 调整数组顺序使得奇数位于偶数前面