设计模式
设计模式是软件开发中常见问题的通用可复用解决方案。掌握设计模式有助于写出更优雅、可维护的代码。
设计模式分类
设计模式通常分为三大类:
🏗️ 创建型模式(Creational Patterns)
关注对象的创建机制,将对象的创建与使用分离。
| 模式 | 说明 |
|---|---|
| 单例模式 | 确保类只有一个实例 |
| 工厂方法模式 | 定义创建对象的接口,由子类决定实例化哪个类 |
| 抽象工厂模式 | 创建相关对象的家族,无需指定具体类 |
| 建造者模式 | 分步骤构建复杂对象 |
| 原型模式 | 通过克隆创建对象 |
🔗 结构型模式(Structural Patterns)
关注类和对象的组合,形成更大的结构。
| 模式 | 说明 |
|---|---|
| 适配器模式 | 将一个类的接口转换为客户期望的另一个接口 |
| 装饰器模式 | 动态地给对象添加额外的职责 |
| 代理模式 | 为其他对象提供一种代理以控制访问 |
| 外观模式 | 为子系统提供统一的接口 |
| 桥接模式 | 将抽象部分与实现部分分离 |
| 组合模式 | 将对象组合成树形结构 |
| 享元模式 | 共享细粒度对象以节省内存 |
🎭 行为型模式(Behavioral Patterns)
关注对象之间的通信和职责分配。
| 模式 | 说明 |
|---|---|
| 策略模式 | 定义算法族,使它们可以互换 |
| 观察者模式 | 定义对象间的一对多依赖关系 |
| 模板方法模式 | 定义算法骨架,将某些步骤延迟到子类 |
| 责任链模式 | 使多个对象都有机会处理请求 |
| 命令模式 | 将请求封装为对象 |
| 迭代器模式 | 顺序访问聚合对象的元素 |
| 状态模式 | 允许对象在内部状态改变时改变行为 |
| 备忘录模式 | 捕获对象内部状态,以便恢复 |
| 中介者模式 | 用一个中介对象封装对象交互 |
| 访问者模式 | 在不修改类的情况下增加新操作 |
设计原则
学习设计模式前,先了解 SOLID 原则:
| 原则 | 说明 |
|---|---|
| S - 单一职责 | 一个类只负责一项职责 |
| O - 开闭原则 | 对扩展开放,对修改关闭 |
| L - 里氏替换 | 子类可以替换父类 |
| I - 接口隔离 | 使用多个专门接口 |
| D - 依赖倒置 | 依赖抽象而非具体 |