一、法则内容:
-
不应该强行要求客户端依赖于它们不用的接口:
即,客户端需要什么功能,就提供什么接口,对于客户端不需要的接口不应该强行要求其依赖。 -
类之间的依赖应该建立在最小的接口上面:
即,单一职责。
二、如何理解“接口”:
-
如果把“接口”理解为一组接口集合:
可以是类库的接口等。如果部分接口只被部分调用者使用,我们就需要将这部分接口隔离出来,单独给这部分调用者使用,而不强迫其他调用者也依赖这部分不会被用到的接口。 -
如果把“接口”理解为单个API接口或函数:
部分调用者只需要函数中的部分功能,那我们就需要把函数拆分成粒度更细的多个函数,让调用者只依赖它需要的那个细粒度函数。 -
如果把“接口”理解为面向对象编程语言中的接口语法(虚基类):
那接口的设计要尽量单一,不要让接口的实现类和调用者,依赖不需要的接口函数。
三、接口隔离原则与单一职责原则的区别:
接口隔离原则:侧重的是软件设计的接口;
单一职责原则:侧重在业务层面的职责划分,即专注业务层面。