用途:在设计与实现接口时遵循接口隔离原则(Interface Segregation Principle, ISP)——客户端不应被迫依赖其不使用的方法。
主要判断与能力:
- 识别“throw/no-op 坏味道”:若实现类必须为接口方法抛异常或写空实现,说明接口过胖。
- 拆分策略:把胖接口拆成聚焦的能力接口,只实现自身支持的接口;需要全部能力时用交叉类型组合,如 type MultiFunctionDevice = Printer & Scanner & Fax。
- 常见拆分:Repository<T> 拆为 Readable<T>、Writable<T>;MultiFunctionDevice 拆为 Printer、Scanner、Fax;FileSystem 拆为 FileReader、FileWriter、FileDeleter;UserService 拆为 UserReader、UserWriter、UserAuth。
- 规模建议:理想 1-3 个方法,4-5 个且高内聚可接受,6+ 个考虑拆分;问“所有实现者是否都需要全部方法”,否则拆分。
- 红线:不用 throw、空实现、supportsX() 能力检查或文档标注“不支持”来绕过,编译期类型检查优于运行时错误;不提供“违规写法+正确写法”两种方案。
适用场景:设计新接口、实现含无用方法的接口、被迫实现不适用方法、接口方法过多、不同实现者只用方法子集时。
限制:资料未提供安装命令、编程语言绑定、价格或平台信息,暂未提供。