五大设计原则
SOLID 是面向对象编程中最重要的五大设计原则之一,由 Robert C. Martin(又称 Uncle Bob)提出,用于编写健壮、可维护、可扩展的程序结构。
🧱 SOLID 原则详解
缩写 | 全称 | 中文含义 | 核心思想 |
---|---|---|---|
S | Single Responsibility Principle | 单一职责原则 | 一个类只负责一项功能,不要“多管闲事” |
O | Open/Closed Principle | 开闭原则 | 对扩展开放,对修改关闭 |
L | Liskov Substitution Principle | 里氏替换原则 | 子类对象能替代父类对象使用,不影响原功能 |
I | Interface Segregation Principle | 接口隔离原则 | 不要强迫实现类依赖它们不需要的接口 |
D | Dependency Inversion Principle | 依赖倒置原则 | 高层模块不应依赖低层模块,二者都依赖抽象;抽象不依赖具体,实现依赖抽象 |
📌 举个简单例子帮助理解:
🔹 假设你要设计一个通知系统:
java
class Notification {
void sendEmail(String msg) {
// 发送邮件
}
void sendSMS(String msg) {
// 发送短信
}
}
这违反了单一职责原则(S),因为 Notification
同时负责多个通知渠道,应该拆分。
🔹 如果未来想支持微信通知,你可能会修改原来的类,这又违反了开闭原则(O)。
解决方法是:定义一个通知接口 Notifier
,每个渠道实现它,然后通过扩展实现新渠道,而不是修改已有代码。
🔹 接口太大还会违反接口隔离原则(I),每个通知方式应该有精简的接口。
🔹 如果客户端直接依赖 EmailSender
、SMSSender
这些具体类,那就违反了依赖倒置原则(D)。
应该让客户端依赖抽象 INotifier
接口,而具体实现注入进来(可用 Spring 等容器实现)。