# 设计原则与思想 --- 接口隔离原则(ISP)理解

简介: # 设计原则与思想 --- 接口隔离原则(ISP)理解

1.如何理解“接口隔离原则”?



接口隔离原则,它对应 SOLID 中的英文字母“I”。对于这个原则,最关键就是理解其中“接口”的含义。


接口隔离原则的英文翻译是“ Interface Segregation Principle”,缩写为 ISP。Robert Martin 在 SOLID 原则中是这样定义它的:“Clients should not be forced to depend upon interfaces that they do not use。”直译成中文的话就是:客户端不应该被强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。


在这条原则中,我们可以把“接口”理解为下面三种东西:


  • 一组 API 接口集合


它可以是某个微服务的接口,也可以是某个类库的接口等等。在设计微服务或者类库接口的时候,如果部分接口只被部分调用者使用,那我们就需要将这部分接口隔离出来,单独给对应的调用者使用,而不是强迫其他调用者也依赖这部分不会被用到的接口。例如:后台管理系统删除用户的接口。


  • 单个 API 接口或函数


函数的设计要功能单一,不要将多个不同的功能逻辑在一个函数中实现。部分调用者只需要函数中的部分功能,那我们就需要把函数拆分成粒度更细的多个函数,让调用者只依赖它需要的那个细粒度函数。比如,count() 实现的几种函数。


  • OOP 中的接口概念


比如 Java 中的 interface。那接口的设计要尽量单一(避免一个大而全的Config接口),不要让接口的实现类和调用者,依赖不需要的接口函数。如:Redis、MySQL、Kafka部分配置信息热更新,新的监控功能需求。


2. 接口隔离原则与单一职责原则的区别



单一职责原则针对的是模块、类、接口的设计


而接口隔离原则相对于单一职责原则,


  • 一方面它更侧重于接口的设计,
  • 另一方面它的思考的角度不同。


它提供了一种判断接口是否职责单一的标准:通过调用者如何使用接口来间接地判定。如果调用者只使用部分接口或接口的部分功能,那接口的设计就不够职责单一。

相关文章
|
设计模式 消息中间件 存储
【Java设计模式 经典设计原则】四 SOLID-ISP接口隔离原则
【Java设计模式 经典设计原则】四 SOLID-ISP接口隔离原则
159 0
|
设计模式 搜索推荐 安全
【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
137 0
|
设计模式 测试技术
设计模式 - 六大设计原则之ISP(接口隔离原则)
接口隔离原则(Interface Segregation Principle, ISP),要求尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含相关的方法。 接口隔离是为了高内聚、低耦合。 在实际的开发中,通常都是先定义好需要开发的接口,并由各个服务去实现。 但是如果没有经过考虑和设计,很可能造成一个接口中包含了众多的接口方法,而这些接口并不一定在每一个类中都需要实现, 这样的接口很难维护, 也不易于扩展,每一次修改验证都有潜在的风险。
201 0
设计模式 - 六大设计原则之ISP(接口隔离原则)
架构整洁之道-07 设计原则-接口隔离原则SIP
接口隔离原则 Interface Segregation Principle,ISP - 客户端不应该依赖它不需要的接口 - 类间的依赖关系应该建立在最小的接口上
128 0
软件架构设计原则--依赖倒置原则
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删
软件架构设计原则--依赖倒置原则
软件架构设计原则--迪米特原则
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删
软件架构设计原则--迪米特原则
|
架构师 数据库
设计原则(五):ISP 接口隔离原则
设计原则(五):ISP 接口隔离原则
265 0
软件架构设计原则--接口隔离原则
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删
设计原则与思想 --- 单一职责原则(SRP)
设计原则与思想 --- 单一职责原则(SRP)
设计原则与思想 --- 单一职责原则(SRP)
面向对象基本原则(1)- 单一职责原则与接口隔离原则
面向对象基本原则(1)- 单一职责原则与接口隔离原则 面向对象基本原则(2)- 里式代换原则与依赖倒置原则 面向对象基本原则(3)- 最少知道原则与开闭原则