面象对象设计6大原则之四:接口隔离原则
转载自 面象对象设计6大原则之四:接口隔离原则
接口隔离原则(ISP),The Interface Segregation Principle
定义
客户端不需要强迫依赖那些它们不需要的接口。
类与接口的依赖应该建议在最小的接口上,也就是说接口应该最小化,不能建立在一个庞大的接口之上,接口合理地按功能职能分成更细的几个单一的子接口。
如果一个接口定义并公布过多的方法,会导致所有的实现类必须要实现接口的方法,可能不同的业务场景不需要实现,所以接口隔离的原则就是只实现他们需要的接口。
像spring中的BeanFactory定义了bean的各种最基本的操作的方法,而BeanFactory下面又有3个扩展的子接口,扩展的子接口拥有父接口的全部方法并且拥有自己的独特的方法,我们可以按需要直接实现父接口或者实现子接口,这样就达到了接口隔离的原则,使接口最小化。
看起来,接口隔离原则是不怎么难实现的原则,只要具备一点业务抽象能力的都可以做到,接口隔离原则在一方面也满足了单一职责原则。
面象对象设计6大原则之四:接口隔离原则相关推荐
- 软件设计模式六大原则之四接口隔离原则(PHP语言实现)
转载,原文链接https://www.cnblogs.com/zhanghengscnc/p/8299459.html 定义:客户端不应该依赖它不需要的接口:一个类对另一个类的依赖应该建立在最小的接口 ...
- 面象对象设计6大原则之五:依赖倒置原则
转载自 面象对象设计6大原则之五:依赖倒置原则 依赖倒置原则(DIP),The Dependency Inversion Principle 定义 1.高层模块不应该依赖低层模块,两都应该依赖于抽象. ...
- 面象对象设计6大原则之二:开放封闭原则
转载自 面象对象设计6大原则之二:开放封闭原则 开放封闭原则(OCP),The Open Closed Principle 定义 一个软件的实体,包括类.方法.模块.应该对扩展开放,对修改关闭. 也就 ...
- 面象对象设计6大原则之一:单一职责原则
转载自 面象对象设计6大原则之一:单一职责原则 单一职责原则(SRP),The Single Responsibility Principle 定义 一个类的修改只能有一个被修改的原因. 通俗地讲,就 ...
- 面象对象设计6大原则之六:迪米特原则
转载自 面象对象设计6大原则之六:迪米特原则 迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则 定义 一个对象应该对其他对象有最少的了解. 也就是说一个类耦合和调用一个类 ...
- 面象对象设计6大原则之三:里氏替换原则
转载自 面象对象设计6大原则之三:里氏替换原则 里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地方必须能透明地引用其子类的对象,即子类 ...
- 6大设计原则之接口隔离原则
接口隔离原则的定义 什么是接口. 实例接口,比如定义了一个Person类,然后 Person p = new Pserson(); 产生一个实例,Person类就是 p 的接口 类接口,就是Java中 ...
- 软件设计原则之接口隔离原则、合成复用原则、迪米特原则
系列文章目录 软件设计原则之单一职责原则.开闭原则 软件设计原则之里氏替换原则.依赖倒置原则 软件设计原则之接口隔离原则.合成复用原则.迪米特原则 文章目录 系列文章目录 一.接口隔离原则 什么是接口 ...
- 六大设计原则之接口隔离原则
接口隔离原则定义 接口隔离有两种定义: Clients should not be forced to depend upon interfaces that they don't use. 客户端不 ...
最新文章
- 用jsp上传文件时报错,是tomcat的文件夹为只读。修改只读权限后正常
- 基于Windows Server 2003 ntbackup下数据文件的完整备份与差异备份
- YUV 4:2:0 格式和YUV411格式区别
- 由塔科马大桥事件 谈软件架构
- datepicker不能选择是为什么_为什么客厅不好看?休闲椅选错了
- 《VMware虚拟机实用宝典》繁体中文版封面
- 读取Excel任务列表并显示在Outlook日历上
- 根据一张表更新另一张表
- Weex Playground APP 源码下载编译运行预览
- oracle的成本核算,请教一下ORACLE ERP制造成本核算(标准成本法)的优点,多谢了!...
- 网络计算机没有权限,电脑网络连接出现“无Internet访问权限”怎么办?
- 那些活在浪里的创业者最终被拍成了电影
- 2007年12月25日至2008年1月1日百宝箱游戏下载排行榜
- Delta RPMs disabled because /usr/bin/applydeltarpm not installed
- 独享还是共享,你选择哪一种锁?(独享锁/共享锁)
- vscode如何自定义背景图片
- minio 的python客户端工具
- 尼尔机械纪元安卓机器人_尼尔机械纪元安卓正版下载-尼尔机械纪元steam下载-k73游戏之家...
- 怒刷python作业(西北工业大学cpSkill平台)
- 笔记:机器学习——吴恩达 第九周
热门文章
- mysql数据库check命令_利用mysqlcheck命令快速修复mysql数据库
- Codeforces Round #624 (Div. 3) D. Three Integers 数论
- 字符串匹配(多模式匹配篇)
- Jumping Monkey(CCPC网络赛重赛)
- icpc网络赛第二场K Meal
- NC51189 Mondriaan‘s Dream
- 1147 Heaps
- CodeForces 1491G Switch and Flip(结论)
- P4299 首都(LCT、重心)
- 11.16 模拟:总结