设计模式四大基本原则(SOLID 里的四大核心,常说的面向对象四大设计原则)
1. 单一职责原则 SRP(Single Responsibility Principle)
定义
一个类/方法只拥有一个职责,只因一个原因发生修改。
核心
一个类只做一件事。
反面例子
一个类同时处理数据库读写、日志打印、接口参数校验;后续改日志逻辑会污染数据库代码,极易出bug。
2. 开闭原则 OCP(Open Closed Principle)
定义
对扩展开放 ,对修改关闭。
核心
新增功能尽量不改动原有成熟代码,通过扩展(继承、接口、组合)实现新逻辑。
作用
避免修改老代码引入线上bug,保证原有逻辑稳定。
3. 里氏替换原则 LSP(Liskov Substitution Principle)
定义
子类可以完全替换父类出现在程序任意位置,替换后程序行为不会出错。
核心
子类不能破坏父类原有行为,重写方法不能弱化功能、抛出更宽泛异常。
反面例子
父类方法不抛异常,子类重写后强制抛出运行时异常,替换后程序崩溃。
4. 依赖倒置原则 DIP(Dependency Inversion Principle)
定义
- 高层模块不依赖低层模块,二者都依赖抽象(接口/抽象类);
- 抽象不依赖实现,实现依赖抽象。
核心
面向接口编程,不要面向具体类。
例子
Service 不直接 new MysqlDao,而是依赖 Dao 接口,可无缝切换 Mysql/Redis/Oracle 实现。
补充:容易混淆的两个点
- 完整 SOLID 五大原则
单一职责、开闭、里氏替换、依赖倒置、接口隔离原则 ISP 。
很多面试题问「四大原则」,指前4个;问SOLID是5个。 - 接口隔离 ISP(第五大,顺带说明)
客户端不应当依赖它不需要的接口;拆分大接口为多个小而专用接口。