浅析设计模式-接口隔离原则
接口隔离原则的英文名称是 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.(类间的依赖关系应该建立在最小的接口上)
可以把这两个定义概括为: 建立单一接口,不要建立臃肿庞大的接口。通俗一点:接口尽量细化,同时接口中的方法尽量少。
保持接口的纯洁性
接口隔离原则对接口进行规范约束,包含一下含义:
- 接口要尽量小
- 接口要高内聚
- 定制服务
- 接口设计是有限度的
最佳实践
- 一个接口只服务于一个子模块或业务逻辑
- 通过业务逻辑压缩接口中的public方法,接口时常去回顾,尽量让接口达到“满身筋骨肉”而不是“肥嘟嘟”的一大堆方法
- 已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理
- 了解环境,拒绝盲从