转载自 面象对象设计6大原则之四:接口隔离原则

接口隔离原则(ISP),The Interface Segregation Principle

定义

客户端不需要强迫依赖那些它们不需要的接口。

类与接口的依赖应该建议在最小的接口上,也就是说接口应该最小化,不能建立在一个庞大的接口之上,接口合理地按功能职能分成更细的几个单一的子接口。

如果一个接口定义并公布过多的方法,会导致所有的实现类必须要实现接口的方法,可能不同的业务场景不需要实现,所以接口隔离的原则就是只实现他们需要的接口。

像spring中的BeanFactory定义了bean的各种最基本的操作的方法,而BeanFactory下面又有3个扩展的子接口,扩展的子接口拥有父接口的全部方法并且拥有自己的独特的方法,我们可以按需要直接实现父接口或者实现子接口,这样就达到了接口隔离的原则,使接口最小化。

看起来,接口隔离原则是不怎么难实现的原则,只要具备一点业务抽象能力的都可以做到,接口隔离原则在一方面也满足了单一职责原则。

面象对象设计6大原则之四:接口隔离原则相关推荐

  1. 软件设计模式六大原则之四接口隔离原则(PHP语言实现)

    转载,原文链接https://www.cnblogs.com/zhanghengscnc/p/8299459.html 定义:客户端不应该依赖它不需要的接口:一个类对另一个类的依赖应该建立在最小的接口 ...

  2. 面象对象设计6大原则之五:依赖倒置原则

    转载自 面象对象设计6大原则之五:依赖倒置原则 依赖倒置原则(DIP),The Dependency Inversion Principle 定义 1.高层模块不应该依赖低层模块,两都应该依赖于抽象. ...

  3. 面象对象设计6大原则之二:开放封闭原则

    转载自 面象对象设计6大原则之二:开放封闭原则 开放封闭原则(OCP),The Open Closed Principle 定义 一个软件的实体,包括类.方法.模块.应该对扩展开放,对修改关闭. 也就 ...

  4. 面象对象设计6大原则之一:单一职责原则

    转载自 面象对象设计6大原则之一:单一职责原则 单一职责原则(SRP),The Single Responsibility Principle 定义 一个类的修改只能有一个被修改的原因. 通俗地讲,就 ...

  5. 面象对象设计6大原则之六:迪米特原则

    转载自 面象对象设计6大原则之六:迪米特原则 迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则 定义 一个对象应该对其他对象有最少的了解. 也就是说一个类耦合和调用一个类 ...

  6. 面象对象设计6大原则之三:里氏替换原则

    转载自 面象对象设计6大原则之三:里氏替换原则 里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地方必须能透明地引用其子类的对象,即子类 ...

  7. 6大设计原则之接口隔离原则

    接口隔离原则的定义 什么是接口. 实例接口,比如定义了一个Person类,然后 Person p = new Pserson(); 产生一个实例,Person类就是 p 的接口 类接口,就是Java中 ...

  8. 软件设计原则之接口隔离原则、合成复用原则、迪米特原则

    系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...

  9. 六大设计原则之接口隔离原则

    接口隔离原则定义 接口隔离有两种定义: Clients should not be forced to depend upon interfaces that they don't use. 客户端不 ...

最新文章

  1. 用jsp上传文件时报错,是tomcat的文件夹为只读。修改只读权限后正常
  2. 基于Windows Server 2003 ntbackup下数据文件的完整备份与差异备份
  3. YUV 4:2:0 格式和YUV411格式区别
  4. 由塔科马大桥事件 谈软件架构
  5. datepicker不能选择是为什么_为什么客厅不好看?休闲椅选错了
  6. 《VMware虚拟机实用宝典》繁体中文版封面
  7. 读取Excel任务列表并显示在Outlook日历上
  8. 根据一张表更新另一张表
  9. Weex Playground APP 源码下载编译运行预览
  10. oracle的成本核算,请教一下ORACLE ERP制造成本核算(标准成本法)的优点,多谢了!...
  11. 网络计算机没有权限,电脑网络连接出现“无Internet访问权限”怎么办?
  12. 那些活在浪里的创业者最终被拍成了电影
  13. 2007年12月25日至2008年1月1日百宝箱游戏下载排行榜
  14. Delta RPMs disabled because /usr/bin/applydeltarpm not installed
  15. 独享还是共享,你选择哪一种锁?(独享锁/共享锁)
  16. vscode如何自定义背景图片
  17. minio 的python客户端工具
  18. 尼尔机械纪元安卓机器人_尼尔机械纪元安卓正版下载-尼尔机械纪元steam下载-k73游戏之家...
  19. 怒刷python作业(西北工业大学cpSkill平台)
  20. 笔记:机器学习——吴恩达 第九周

热门文章

  1. mysql数据库check命令_利用mysqlcheck命令快速修复mysql数据库
  2. Codeforces Round #624 (Div. 3) D. Three Integers 数论
  3. 字符串匹配(多模式匹配篇)
  4. Jumping Monkey(CCPC网络赛重赛)
  5. icpc网络赛第二场K Meal
  6. NC51189 Mondriaan‘s Dream
  7. 1147 Heaps
  8. CodeForces 1491G Switch and Flip(结论)
  9. P4299 首都(LCT、重心)
  10. 11.16 模拟:总结