接口隔离原则(ISP):
关键词:接口的职责要单一
定义:
- 客户端不应依赖他不需要的接口
- 类间的依赖关系应当建立在最小的接口上(最小接口也就是接口中没有多余的方法)
接口隔离原则告诉我们,不要把一大堆方法塞进一个接口里,导致这个接口变得臃肿无比。应该要根据实际需要,让接口中只有用得上的方法,也就是说要细化我们的接口。
尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。接口隔离原则和单一职责原则都是为了实现提高类的高内聚,降低他们之间的耦合性,体现了封装的思想。
优点:
- 提高系统的灵活性和可维护性。
- 降低系统的耦合性。
- 保证系统的稳定性。
- 使用多个专门的接口还能体现对象的层次,因为可以通过接口的继承,实现对总接口的定义。
- 能减少项目工程中的代码冗余。
最佳实践:
- 接口尽量小,但是要有限度。一个接口只服务于一个子模块或业务逻辑。
- 为依赖接口的类定制服务。只提供调用者需要的方法,屏蔽不需要的方法。
- 了解环境,拒绝盲从。每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同,深入了解业务逻辑。
- 提高内聚,减少对外交互,使接口用最少的方法去完成最多的事情。
接口隔离原则与单一职责的不同点: - 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离
- 单一职责原则主要约束类,它针对的是程序中的实现和细节;接口隔离原则主要针对抽象和程序整体框架的构建。