接口隔离原则,这个原则最关键就是理解其中“接口”的含义,不同的理解方式,对应的在原则上也有不同的解读方式。除此之外,接口隔离原则和单一职责原则有些类似,需要了解它们的区别和联系
接口隔离原则,英文名Iterface Segregation Principle,简称ISP。客户端不应强迫它不需要的接口。这里的客户端可以理解为调用者或者使用者。
对于这个原则,最重要的是理解“接口”的含义,这里有三种不同的理解
如果把“接口”理解为一组接口的集合,可以是某个微服务的接口,也可以是某个类库的接口等。如果部分接口只被部分调用者使用,我们需要将着部分接口隔离出来,单独给这部分调用者使用,而不是强迫其它调用者也依赖这部分不会被调用的接口。
如果把“接口”理解为单个API接口或者函数,部分调用者只需要调用函数的部分功能,那我们需要把函数拆分成粒度更细的多个函数,让调用者只依赖它需要的那个细粒度函数。
如果把“接口”理解为OOP中的接口。也可以理解为面向对象中的接口语法。那接口的设计要尽量单一,不要让接口的实现类和调用者,依赖不需要的接口函数。
接口隔离原则与单一职责原则的区别?
单一职责原则针对的是模块、类、接口的设计。接口隔离原则相对于单一职责原则,一方面更侧重于接口的设计,另一方面它思考的角度也是不同的。接口隔离原则提供了一种判断接口的职责是否单一的标准;通过调用者如何使用接口来间接的判定。如果调用者使用部分接口或者部分功能,那接口的设计职责不够单一。
参考:设计模式之美--王争