设计模式
SOLID设计原则
- SRP 单一职责
- OCP 开闭原则
- LSP 里式替换原则
- ISP 接口隔离原则
- DIP 依赖倒置原则
分类
创建型
单例模式、工厂模式、建造者模式、原型模式
结构型
代理模式、桥接模式、装饰者模式、适配器模式、门面模式、组合模式、享元模式
行为型
观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式
依赖反转 (DIP)
核心目的:减少模块间耦合,提高可维护性和扩展性。
关键点:
- 模块之间不应存在直接依赖,都应依赖抽象类或接口
- 抽象不应依赖细节,细节应依赖抽象
// 通过接口解耦
abstract class IUserRepository {
getUser(id: number): User;
}
class UserService {
constructor(private repo: IUserRepository) {}
getUserInfo(id: number) {
return this.repo.getUser(id);
}
}前端与设计模式
JavaScript不是纯粹的OOP语言,函数是第一等公民。原生OOP设计模式在JS中实现有一定困难。
面向对象
封装(信息隐藏、数据访问保护)、抽象、继承、多态