# 设计原则与思想 --- 接口隔离原则(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. 接口隔离原则与单一职责原则的区别



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


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


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


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

相关文章
软件设计原则-接口隔离原则讲解以及代码示例
接口隔离原则(Interface Segregation Principle,ISP)是面向对象设计中的一个原则,提倡使用多个专门的接口,而不使用单一的大接口。它最早由Robert C. Martin在其《敏捷软件开发:原则、模式与实践》一书中提出。 接口隔离原则的核心思想是:客户端不应该依赖于它不需要的接口。也就是说,一个类或模块不应该强迫它的用户去依赖无用的接口。相反,应该将大接口拆分成多个小接口,符合客户端的需求,使客户端只依赖于它真正需要的接口。 接口隔离原则的目标是降低类或模块之间的耦合度,提高代码的可维护性、可扩展性和可测试性。通过使用多个专门的接口,我们可以避免类或模块之间出现不
129 0
六大设计原则-接口隔离原则【Interface Segregation Principle】
六大设计原则-接口隔离原则【Interface Segregation Principle】
45 0
七大设计原则之接口隔离原则应用
七大设计原则之接口隔离原则应用
54 0
|
设计模式 安全 Java
设计原则之接口隔离原则
设计原则之接口隔离原则
71 0
设计原则之接口隔离原则
|
设计模式 消息中间件 存储
【Java设计模式 经典设计原则】四 SOLID-ISP接口隔离原则
【Java设计模式 经典设计原则】四 SOLID-ISP接口隔离原则
167 0
|
设计模式 测试技术
设计模式 - 六大设计原则之ISP(接口隔离原则)
接口隔离原则(Interface Segregation Principle, ISP),要求尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含相关的方法。 接口隔离是为了高内聚、低耦合。 在实际的开发中,通常都是先定义好需要开发的接口,并由各个服务去实现。 但是如果没有经过考虑和设计,很可能造成一个接口中包含了众多的接口方法,而这些接口并不一定在每一个类中都需要实现, 这样的接口很难维护, 也不易于扩展,每一次修改验证都有潜在的风险。
207 0
设计模式 - 六大设计原则之ISP(接口隔离原则)
架构整洁之道-07 设计原则-接口隔离原则SIP
接口隔离原则 Interface Segregation Principle,ISP - 客户端不应该依赖它不需要的接口 - 类间的依赖关系应该建立在最小的接口上
130 0
软件架构设计原则--依赖倒置原则
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删
软件架构设计原则--依赖倒置原则
|
数据安全/隐私保护
软件架构设计原则--单一职责原则
> 本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删
软件架构设计原则--单一职责原则
软件架构设计原则--里氏替换原则
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删
软件架构设计原则--里氏替换原则