接口隔离原则(ISP:interface segregation principle)

定义:
1.客户端不应该依赖它不需要的接口
2.一个类对另一个类的依赖应该建立在最小接口上。

当我们设计一个大的接口A,其子类B、C为实现接口功能,可能不得不写一些不需要的空的方法,而客户端需要B的实现时必须通过A这个非最小接口,因为其中包含客户端不需要的方法。解决思路是为B、C分别建立不同的接口。

说到这里,很多人会觉的接口隔离原则跟之前的单一职责原则很相似,其实不然。其一,单一职责原则原注重的是职责;而接口隔离原则注重对接口依赖的隔离。其二,单一职责原则主要是约束类,其次才是接口和方法,它针对的是程序中的实现和细节;而接口隔离原则主要约束接口接口,主要针对抽象,针对程序整体框架的构建。

采用接口隔离原则对接口进行约束时,要注意以下几点:

  1. 接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。

  2. 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。

  3. 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。

运用接口隔离原则,一定要适度,接口设计的过大或过小都不好。设计接口的时候,只有多花些时间去思考和筹划,才能准确地实践这一原则。


Donne
694 声望25 粉丝

知其然,知其所以然。