来自菜鸟的关怀

随着天气越来越热,大家是不是都已经过上“左手小冰棍,右手大西瓜,吹着小空调,乐的笑哈哈”的日子了?不过还是要在这里提醒大家一下,冷饮、空调虽然好,但是一定要适度啊!

这不最近菜鸟就因为欢乐过度,乐极生悲了,急性肠胃炎找上了。拉肚子,拉到怀疑人生,上厕所,上到头皮发麻,整个人都已经虚脱了。所以大家一定要多多注意,千万别跟菜鸟一样吃坏肚子。

虽然身体不适,但是菜鸟还在坚持写文章。看在菜鸟这么努力的份上大家记得点赞加关注呦!

基本概念

专业解释:

1、客户端不应该依赖它不需要的接口。

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

是不是有种雨里雾里的感觉?这就对了,只有不好理解才能称得上专业吗!

好了好了,开玩笑啦!让菜鸟来解释一下。

一个接口只应该被赋予一种职责(角色),不可以将不同职责都交给一个接口。

接口隔离原则的好处

1、单一化接口的职责,从而有效地避免接口污染。2、当一个接口的方法过多,往往会造成使用该接口的类中闲置一些方法,造成代码的冗余,通过细分接口可有效避免该现象。3、可以提高代码的灵活性,就好比搭积木一样,我们可以将一个大的接口拆成多个小接口,不同的小接口可以有多种组合。4、促使程序高内聚、低耦合。

注意:细化接口虽好,但是也不可一味地盲目拆分,不然会增加接口的数量,提高系统的维护成本。

代码示例

先展示一下未遵守接口隔离原则的代码

public interface School {  /**   * 上课   */  void attendClass();  /**   * 下课   */  void afterClass();  /**   * 学习   */  void learn();  /**   * 讲课   */  void lecture();}

如上代码,假设此时有一个People类,它的角色是学生,实现了School接口。它就会被迫实现“讲课”这个方法,事实它是不需要该方法的。这就造成了代码的冗余,使我们的代码变得臃肿。

按照接口隔离原则,我们可以将上面的大接口拆分成3个小的接口。

学校接口:

public interface School {  /**   * 上课   */  void attendClass();  /**   * 下课   */  void afterClass();}

老师接口:

public interface Teacher {  /**   * 讲课   */  void lecture();}

学生接口:

public interface Student {  /**   * 学习   */  void learn();}

通过上面的拆分我们就可以有效避免冗余代码的产生,进而还可以促使我们的代码变得更加灵活。

以上就菜鸟对接口隔离原则的一点自己的看法,如果文章那里写的不合理的希望大家可以提出来。还有一点需要提醒大家的就是:凡事都是利弊共存,我们需要学会权衡利弊,找到最优的解决方法,促使程序变得更加的优秀。好了今天的分享就到这里了,感觉文章写得还不错的记得给点赞加关注呦,最后祝大家周末愉快!

接口隔离原则_是时候深入学习一下“接口隔离原则”了相关推荐

  1. c# 设计原则需要学习吗_向最好的学习:产品设计原则

    c# 设计原则需要学习吗 重点 (Top highlight) In my job as Design Team Lead at SimpleSite, I've recently been part ...

  2. java的接口怎么理解_如何理解Java 中的接口

    一.接口(Interface) 在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法.接口并不是类,编写接口的方 ...

  3. 对接接口文档_产品经理所理解的接口

    本文目标用户: 1.在产品设计中遇到有关于接口对接的经历,但是之前没有接触过类似对接. 2.想了解产品眼中的接口到底是什么东西? 3.对于已经明确了解并有相关对接的产品大佬们,欢迎你们指点. 一.AP ...

  4. smart原则_高效能宝宝养成记之七 SMART原则:梦想与空想只隔一个目标的距离

    自从有了愿景板,小南每天都要看好几次,早晨起床要看,晚上回家要看,睡觉之前还要看.小南这几天心里都是美滋滋的,觉得有梦想真好啊.宝宝看着小南乐呵呵的模样,先是露出一副忍俊不禁的表情,随后高深莫测地摇了 ...

  5. java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答

    基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为 ...

  6. 功能对等四个原则_佛山房屋加固工程需遵循的原则与步骤

    ​房屋加固工程与修缮工程的区别? 房屋加固工程一般是由于结构达不到设计要求的承载,或者因为某些问题,如结构裂缝.断裂.缺陷等问题而影响结构安全,达不到结构耐久性的,才需要做加固. 修缮工程是针对比较老 ...

  7. 查找这个接口的调用_事务处理不当,线上接口又双叒内存泄漏了!(附图解问题全过程)...

    情景 项目上线了一个接口,先灰度一台机器观察调用情况: 接口不断的调用,过了一段时间,发现机器上的接口调用开始报 OOM异常 ! 当天就是上线deadline了,刺激.. 发现问题 第一步,使用 jp ...

  8. python后端接口怎么写_看看人家那后端API接口写得,那叫一个优雅!

    程序员的成长之路 互联网/程序员/技术/资料共享 阅读本文大概需要 4 分钟. 来自:今日头条,作者:老顾聊技术 链接:https://www.toutiao.com/i669440464582711 ...

  9. 综合前置接口报文规范_浅谈用HttpRunner进行接口自动化测试

    在参与我们测试平台开发的时候,结识了HttpRunne这个优秀的开源接口测试框架,初步研究发现HttpRunner可以非常方便.非常高效地实现接口自动化测试. 01HttpRunner和常用接口测试框 ...

最新文章

  1. 分布式端口扫描利刃: 使用DNmap创建Nmap集群
  2. 搜索推荐炼丹笔记:点击位置偏差的经验比较
  3. 解决nginx不支持pathinfo Thinkphp命名空间问题
  4. 杭州、互联网、体制化,和中年
  5. 软件测试--selenium脚本编写注意点(二)
  6. linux 查看 pub文件夹,linux 文件/目录的属性及权限
  7. 【python】15行代码下载快手无水印短视频
  8. Python实现PDF复制自动去除换行及空格
  9. 通信电子线路实验-调幅模块仿真(发送与接收)
  10. Centos设置固定ip
  11. MacBook鼠标指针乱窜/不受控制问题的解决方法
  12. 和菜鸟一起学android4.0.3源码之硬件gps简单移植
  13. 对抗雾霾的健康饮食注意
  14. 第6章 查询处理和查询优化
  15. 巫宁坤 一滴泪 pdf mobi kindle
  16. 孙子兵法——三十六计
  17. matlab 图像输入和显示函数
  18. 前端 HTML(1)
  19. PCIe板卡结构尺寸
  20. 循环比赛日程表(分治 C++)

热门文章

  1. 分享WCF聊天程序--WCFChat
  2. java url json字符串_JAVA中带有JSON字符串的HTTP POST请求
  3. Web项目性能优化之减少HTTP请求次数优化
  4. PHP-FPM.CONF配置:日志文件、端口设置、动态静态选择设置
  5. MySQL启动mycat分库分表报错Java HotSpotTM 64-Bit Server VM warning: ignoring option MaxPermSize=64M
  6. PHP算法根据周数获取开始结束日期
  7. java技术栈有哪些_Java程序员必备的21个核心技术,你都掌握了哪些?
  8. tp5 iis7 404 解决方案
  9. win10 mysql 远程连接_win10 docker部署mysql并启动远程连接
  10. springbootweb导入静态资源