一、定义
建立单一的接口,功能尽量细化,
不要建立臃肿的接口。
- 不依赖不需要的接口,剔除不需要的接口
- 最小接口,对接口进行细化,方法数最少
友情提醒:xmind导出的图片有点模糊,请放大查看
二、 问题的由来
2.1 问题
如下图,类C和类D分别实现接口I,I中有5个方法,在子类Class C中只需要用到1、2、3,但确需要实现所有方法;在子类Class D中,本来只需要用到4、5,也需要实现所有方法。
2.2 解决方案
遵循接口隔离原则。细化接口I1,内部只包含方法1、2、3,让Class C实现;创建接口I2,内部只包含4、5,让ClassD实现它。
三、 单一职责和接口隔离原则的区别
- 单一原则:注重职责,业务逻辑的划分
- 接口隔离原则:重点在接口的方法数更少
四、 特点
- 接口尽量小
- 拆分接口,接口隔离的核心定义,不出现臃肿的接口
- 不违反单一原则把一个业务拆分成两个接口
- 遵循单一原则,避免臃肿
- 拆分接口,接口隔离的核心定义,不出现臃肿的接口
- 接口高内聚
- 提高类、接口、模块的处理能力,减少与外界交互
- 具体:public越少越好,后期也越好维护
- 定制服务
- 起源 : 系统模块间的耦合需要有相互访问的接口, 这里就需要为各个 客户端 的访问提供定制的服务接口;
- 只提供需要的接口,不需要就不提供
- 接口隔离限度
- 粒度越小,接口越灵活,但同时使系统变复杂,维护难度增加
- 粒度越大,灵活性越低,无法提供定制服务,增大项目风险
五、 原子接口划分原则
- 接口模块对应关系:一个接口只服务于一个子模块或业务逻辑
- 方法压缩:通过业务逻辑压缩接口中的public方法,减少接口的方法数量
- 修改适配:尽量去修改已经被污染的接口,如果变更过大,使用适配器模式处理