用途:该技能提供 Robert C. Martin 的 SOLID 五项原则,用于可维护、可测试的面向对象设计,适用于后端服务、仓储、控制器和复杂前端组件。
主要能力:
- 单一职责(SRP):一个类只有一个变更原因;若需用“和”描述职责就应拆分。
- 开闭原则(OCP):通过新增类扩展,而非修改已有类,使用接口实现。
- 里氏替换(LSP):子类型必须遵守基类契约,替换后不破坏调用方。
- 接口隔离(ISP):接口小而聚焦,客户端只依赖其使用的方法。
- 依赖倒置(DIP):高层模块依赖抽象而非具体实现,支持注入。
使用方式:提供决策树辅助判断——难以测试时用 DIP 依赖接口并构造注入;新增功能需改旧类时用 OCP 提取接口;类有多个变更原因时用 SRP 拆分;接口含实现者不需要的方法时用 ISP 拆分;子类违反基类契约时用 LSP 重新设计层次。资料给出通知服务的完整示例,展示五项原则如何协同。
适用场景:设计类或服务结构、识别代码难测试或难修改的原因、审查类职责与依赖、构建插件/扩展系统。
限制:不适用于 200 行以下的简单脚本或工具、速度优先于正确性的原型或 MVP、无类的过程式代码。需注意过度拆分 SRP、过早应用 OCP、测试 mock 技术上违反 LSP(可接受)、函数式代码中的对应做法(DIP 注入函数、SRP 每函数单一目的、OCP 通过组合扩展)。资料还列出各原则的独立参考文件。