本文是对王争大佬《设计模式之美》的学习总结
接口隔离原则 Interface Segregation Principle (ISP)
接口隔离原则的英文翻译是“Interface Segregation Principle”,缩写为ISP。Robert Martin 在SOLID原则中是这样定义它的:“Clients should not be forced to depend upon interface that they do not use.”。直译成中文就是:客户端不应该被强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。
我们可以把“接口”理解为下面三种东西:
- 一组API接口集合
- 单个API接口或函数
- OOP中的接口概念
把“接口”理解为一组API接口集合
我们把接口隔离原则中的接口,理解为一组接口集合,它可以是某个微服务的接口,也可以是某个类库的接口等等。在设计微服务或者类库接口的时候,如果部分接口只被部分调用者使用,那我们就需要将这部分接口隔离出来,单独给对应的调用者使用,而不是强迫其他调用者也依赖这部分不会被使用到的接口。
把“接口”理解为单个API接口或函数
换一种理解方式,把接口理解为单个接口或函数,那接口隔离原则就可以理解为:单个接口或函数的设计要功能单一,不要将多个不同的功能逻辑在一个函数中实现。
把“接口”理解为OOP中的接口概念
也可以理解为面向对象编程语言中的接口语法,那接口的设计要尽量单一,不要让接口的实现类和调用者,依赖不需要的接口函数。
接口隔离原则与单一职责原则的区别
接口隔离原则和单一职责原则有点类似,不过稍微有些区别。单一职责原则针对的是模块、类、接口的设计。而接口隔离原则相对于单一职责原则,一方面它更侧重于接口的设计,另一方面它的思考的角度不同。接口隔离原则提供了一种判断接口知否职责单一的标准:通过调用者如何使用接口来间接地判定。如果调用者只使用部分接口或接口的部分功能,那接口的设计就不够职责单一。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END