接口隔离原则的英文名称是 Interface Segregation Principle,简称ISP。

定义

接口分为两种:

  • 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的描述,这是一种接口
  • 类接口(Class Interface), Java中经常使用的interface关键字定义的接口。

隔离有两种定义:

  • Clients should not be forced to depend upon interfaces that type don't use.(客户端不应该依赖它不需要的接口。)
  • The Dependency of one class to another one should depend on the smallest possible interface.(类间的依赖关系应该建立在最小的接口上)

可以把这两个定义概括为: 建立单一接口,不要建立臃肿庞大的接口。通俗一点:接口尽量细化,同时接口中的方法尽量少。

保持接口的纯洁性

接口隔离原则对接口进行规范约束,包含一下含义:

  1. 接口要尽量小
  2. 接口要高内聚
  3. 定制服务
  4. 接口设计是有限度的

最佳实践

  1. 一个接口只服务于一个子模块或业务逻辑
  2. 通过业务逻辑压缩接口中的public方法,接口时常去回顾,尽量让接口达到“满身筋骨肉”而不是“肥嘟嘟”的一大堆方法
  3. 已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理
  4. 了解环境,拒绝盲从