用面向对象编程开发软件时,初期代码清晰、功能正常,但新需求一来,改一个bug就破坏另一个功能,一个类同时处理业务逻辑、数据库访问和邮件通知。这正是SOLID要解决的问题 — 帮助开发者在变更面前保持代码的可维护性。
SOLID是Robert C. Martin(Uncle Bob)提出的五个设计原则:
单一职责原则(SRP):一个类应当只有一个变更理由。避免将验证、持久化和通知塞进同一个类。
开闭原则(OCP):软件实体应对扩展开放,对修改关闭。通过接口、策略模式、插件架构等方式增加新行为,不动原有稳定代码。
里氏替换原则(LSP):子类型必须能替换其基类型。例如,让鸵鸟实现“会飞”的接口就违反了LSP,应拆分为“鸟类”和“飞鸟类”。
接口隔离原则(ISP):客户端不应依赖它不使用的接口。把臃肿的Worker接口拆成Workable和Eatable,避免机器人被迫实现吃的方法。
依赖反转原则(DIP):高层模块不应依赖低层模块,两者都应依赖抽象。业务逻辑不该直接new一个EmailSender,而应依赖MessageSender接口。
常见误区:SRP不是每个类只有一个方法;OCP不是必须用接口;DIP不等于依赖注入(DI是技术,DIP是原则)。对小型应用不必强套SOLID,防止过度设计。
SOLID的核心是管理变更。五个原则各自解决刚度的不同来源:SRP减少无关变更、OCP最小化对稳定代码的改动、LSP保护可替换性、ISP避免不必要依赖、DIP分离业务规则与实现细节。目标不是消除变更,而是让变更成本更低。
#开发者 #工具 #SOLID #OOP #设计原则 #软件设计 #架构 #面向对象 #单一职责 #开闭原则
@DevToolboxHub
