设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principle)。


I-接口隔离原则(Interface Segregation Principle)

 一、定义
    1.  客户端不应依赖它不需要的接口。(Clients should not be forced to depend upon interfaces that they don't  use)
   2.  类间的依赖关系应该建立在最小的接口上。(The dependency of one class to another one should depend on the smallest possible interface.)

二、理解

  1. 什么是接口?

  1)实例接口 (object interface)

  Person zhangsan=new Person("zhangsan")。  Person就是zhangsan实例的接口。

  2)类接口(class interface)

  在java中,直接由关键字interface定义的类,称为接口。  

  2.什么是隔离?

  1) 客户端不应该依赖它不需要的的接口。(Clients should not be forced to depend upon interfaces that they don't use. )

  2) 类间的关系应该建立在最小的接口上。 (The dependency of one class to anthor one should depend on the smallest possible interface.)

  简而言之, 不要写笼统的接口,接口要尽量细化,方法要尽量少。这样的优势在于,能够减少变更影响的范围,隔离变化

  单一职责原则和接口隔离原则的审视角度不同。单一职责原则从职责的角度考虑, 从业务逻辑的角度划分, 要求某个类的职责要单一。该类可以为多个模块提供方法访问。而接口隔离原则是从使用的角度考虑的,需要为多个模块提供多个专门的接口,对应的接口方法应单一,专门为某个模块提供访问,某个模块不需要的方法,不需要写上去。

三、优缺点

  1. 优点:接口越细,越灵活,能够在客户提出“无理”要求时,更好的应付变化,有更好的可维护性

  2. 缺点:如果接口太细,会造成类接口”膨胀“, 增加系统的复杂性

四、注意事项

  1. 接口要尽量小,不要写臃肿的接口,小的前提是单一职责原则。

  2. 接口要“高内聚”, 接口是对外的承诺,越少越好,对外的承诺越少,变更的风险越少

  3. 定制服务。定制服务就是为每个个体提供优良的服务,在做系统设计时需要考虑对系统之间或模块之间的“相互访问”接口采用定制服务。

  4. 接口设计是有限度的,

  5. 一个接口只服务于一个子模块或业务逻辑。

  6. 通过业务逻辑压缩接口中的public方法

  7. 已经被污染的接口,尽量去修改,弱变更的风险较大,则采用适配器模式进行转化

  8. 好的接口设计,需要深入了解业务逻辑,不可盲从。

学习资料:

  《设计模式之禅》秦小波 著

转载于:https://www.cnblogs.com/timfruit/p/9746073.html

学习设计模式 - 六大基本原则之接口隔离原则相关推荐

  1. 学习设计模式 - 六大基本原则之单一职责原则

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  2. 学习设计模式 - 六大基本原则之开闭原则

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  3. [设计模式]设计模式之禅关于接口隔离原则

    在讲接口隔离原则之前,先明确一下我们的主角--接口.接口分为两种: ● 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的描述 ...

  4. 设计模式之禅之接口隔离原则

    声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 接口隔离原则(Interface Segregation Principle):每个模块接口独立 1.定 ...

  5. 设计模式-单一职责及接口隔离原则

    一:单一职责原则 简单理解就是,一个类只负责一项职责. 若一个DAO类即可以操作user表,又可以操作order表,则不符合单一职责原则 应该分成两个DAO类(只有类中方法数量比较少,可以在方法级别上 ...

  6. python设计模式六大原则_学习设计模式 - 六大基本原则之迪米特法则(示例代码)...

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  7. 接口隔离原则_设计模式六大原则

    作者:VieLei 原文:https://blog.csdn.net/s10461/article/details/53941097 在android中我们常提起的设计模式大约有23种,利用好设计模式 ...

  8. 接口隔离原则_设计模式的三大分类及六大原则

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过 ...

  9. 设计模式六大原则(五)接口隔离原则

    设计模式六大原则 定义:简称ISP.客户端不应该依赖它不需要的接口:一个类对另一个类的依赖应该建立在最小的接口上. 举例子: 给出指定食材(西红柿.黄瓜.芹菜),冷热菜师傅要根据自己的需求不同,对食材 ...

最新文章

  1. docker部署mysql5-7-31
  2. 3星|《数据思维:从数据分析到商业价值》:有趣的数据分析案例
  3. 射影几何3:拓广平面
  4. 2019年我建议你做好三件事情
  5. context switch的切换过程(TTBR0的切换/ASID的介绍)
  6. localStorage的过期时间设置的方法?
  7. java什么是网络接口_java接口和类的区别是什么?它们都有哪些作用呢?
  8. lvm 逻辑卷的快照及备份 还原
  9. 在你的andorid设备上运行netcore (Linux Deploy)
  10. Mybatis(8)DAO实现类的使用方式
  11. python 运算符重载_Python中类的运算符重载
  12. php类似while函数,php 实现类似于pyhon中的Construct库的功能(四)实现do-while功能...
  13. 使用numpy构建卷积网络
  14. 概率图模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-多项式贝叶斯
  15. 使用R包qpdf用一行代码将多个pdf合并为一个pdf
  16. TFS 2010 使用手册(四)备份与恢复
  17. bootstrap table表头列名转行
  18. node 工具模块lodash
  19. 全球各国人口密度(1961-2018年)
  20. 单目、二目、三目运算符

热门文章

  1. pycharm里怎么关闭一个项目_【周末分享】一个完整的项目复盘到底要怎么做?...
  2. TCP/IP学习笔记(五)TCP的保活定时器
  3. 每天一道LeetCode-----给定序列中2/3/4个元素的和为target的所有集合,或3个元素的和最接近target的集合
  4. mongodb存入mysql_关于mongodb转存MySQL
  5. 二叉树的后序遍历—leetcode145
  6. 单词拆分—leetcode139
  7. 设计进步,记一笔,控制层的代码,他不光控制还要校验数据!以前理解错啦
  8. 《Linux内核设计与实现》读书笔记(十五)- 进程地址空间(kernel 2.6.32.60)
  9. HDU Problem - 1533 Going Home(费用流板子题)
  10. 通过简单的Linux命令,编译一个C语言代码