面向对象设计原则之接口隔离原则

目录

定义

接口隔离原则,全称为 Interface Segregation Principle,缩写ISP。

  • 原始定义:Clients should not be forced to depend upon interfaces that they don't use。
    翻译: 不应该强行要求客户端依赖它们不用的接口。
  • 另一种定义:The dependency of one class to another one should depend on the smallest possible interface。
    翻译: 类之间的依赖应该建立在最小的接口上面。

总结:

客户端需要什么功能,就提供什么接口,对于客户端不需要的接口不应该强行要求其依赖;类之间的依赖应该建立在最小的接口上面,这里最小的粒度取决于单一职责原则的划分。

接口隔离原则与单一职责原则

从功能上看有相似性,但有区别如下:

  • 从原则约束的侧重点来说,接口隔离原则更关注的是接口依赖程度的隔离,更加关注接口的"高内聚";而单一职责原则更加注重的是接口职责的划分。

  • 从接口的细化程度来说,单一职责原则对接口的划分更加精细,而接口隔离原则注重的是相同功能的接口的隔离。接口隔离里面的最小接口有时可以是多个单一职责的公共接口。

  • 单一职责原则更加偏向对业务的约束,接口隔离原则更加偏向设计架构的约束。这个应该好理解,职责是根据业务功能来划分的,所以单一原则更加偏向业务;而接口隔离更多是为了"高内聚",偏向架构的设计。

示例

示例参考 文章 https://blog.csdn.net/u011385940/article/details/124137704

接口隔离原则认为不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口要好。做接口拆分时,也要尽量满足单一职责原则。将外部依赖减到最少,降低模块间的耦合。

比如类A只需要使用方法1、方法3,类B只需要使用方法2、方法4,但在源代码层次上与所有方法形成依赖关系。这种依赖意味着我们对接口I的方法2修改,即使不会影响A所依赖的方法1、方法3的功能,也会导致它需要重新部署和编译。

改造后,类A不需要用到方法2、方法4,就可以选择不依赖它们。代码更加清晰,接口职责更加明确。

相关推荐
比格丽巴格丽抱6 天前
spring\strust\springboot\isp前后端那些事儿
spring boot·spring·接口隔离原则
爱跨境的笑笑13 天前
ISP 代理提供商:互联网安全的关键参与者
网络·网络协议·tcp/ip·智能路由器·ip·接口隔离原则
huaqianzkh25 天前
接口隔离原则理解和实践
设计模式·接口隔离原则
记录无知岁月1 个月前
【GD32】(三) ISP基本使用
接口隔离原则
Theodore_10221 个月前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
Bonne journée1 个月前
摄像机ISP和DSP的区别?
接口隔离原则·摄像机isp和dsp的区别?
碎碎思1 个月前
如何使用 Vivado 从源码构建 Infinite-ISP FPGA 项目
fpga开发·接口隔离原则
xiaoxiongip6661 个月前
ISP是什么?
网络·爬虫·网络协议·tcp/ip·ip·接口隔离原则
瞎姬霸爱.1 个月前
设计模式-七个基本原则之一-接口隔离原则 + SpringBoot案例
设计模式·接口隔离原则
FoolRabbit2 个月前
「撸一手好代码」设计模式之接口隔离原则
java·设计模式·接口隔离原则