Appearance
接口隔离原则
接口隔离原则(Interface Segregation Principle, ISP) 由 Robert C. Martin 在 SOLID 设计原则中提出,其英文原文定义为:
“Clients should not be forced to depend on methods they do not use.”
即,客户端不应被迫依赖它们不需要的接口。该原则强调,臃肿的接口(“胖接口”)会导致实现类承担不必要的负担,应通过拆分接口来确保每个接口的职责单一。
核心思想
接口的设计应基于最小化功能集,确保每个接口仅包含客户端实际需要的方法。若一个接口包含多个独立功能,会导致实现类被迫提供冗余方法(如空实现或抛出异常),从而违反封装性。
核心作用
- 减少耦合:客户端仅依赖与其相关的接口,避免因接口变动影响无关功能。
- 提高灵活性:通过细粒度接口组合,支持按需实现功能(如实现 Printer 接口的类无需支持 Scanner 接口的功能)。
- 避免冗余代码:消除实现类中的空方法或无效占位符,提升代码可维护性。
示例:
违反 ISP:一个 MultiFunctionDevice 接口包含 print(), scan(), fax() 方法,但普通打印机类被迫实现所有方法。
符合 ISP:拆分为 Printer、Scanner、FaxMachine 三个接口,客户端按需组合实现。
通过遵循 ISP,系统可更灵活地应对需求变化,同时降低模块间的隐性依赖,是构建高内聚、低耦合架构的关键实践。