首页/开发/代码质量与评审速查/接口隔离原则 ISP(Interface Segregation Principle)
设计原则与模式62 条

接口隔离原则 ISP(Interface Segregation Principle)

客户不应被迫依赖它们不使用的接口(Martin 表述):大而全的接口拆成面向调用者的细接口,实现类不必为空方法占位,调用方依赖面收窄。

问题胖接口 + 空实现/抛异常的占位方法
做法按使用方视角拆分角色接口
收益依赖更少、实现类负担更轻

角色接口示例

角色接口示例
// 之前:Worker { work(); eat(); } 导致机器人吃空方法
// 之后
interface Workable { void work(); }
interface Feedable { void eat(); }
与 SRP 的差别:SRP 管实现的修改原因,ISP 管调用方的依赖视图。

易错点

  • 接口拆得像参数表:角色边界丢失,拼装成本上升
  • 公共 API 频繁拆接口:版本兼容负担随拆分次数增长

数据来源与参考

  • Robert C. Martin · ISP 论述(《敏捷软件开发》等)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌