设计模式是经过验证的通用解决方案,用于解决常见软件设计问题,提高代码可读性、可维护性和可扩展性。
设计模式分类
创建型模式
专注于对象创建,将创建过程与系统分离。
| 模式 | 说明 |
|---|---|
| 单例模式 | 确保类只有一个实例 |
| 工厂模式 | 子类决定实例化的类 |
| 抽象工厂模式 | 创建相关对象系列 |
| 生成器模式 | 逐步构建复杂对象 |
| 原型模式 | 复制现有实例创建新对象 |
结构型模式
关注对象组合,形成更大结构。
| 模式 | 说明 |
|---|---|
| 适配器模式 | 转换接口以兼容客户端 |
| 桥接模式 | 分离抽象与实现 |
| 组合模式 | 树状结构表示部分-整体 |
| 装饰器模式 | 动态添加功能 |
| 外观模式 | 简化子系统接口 |
| 享元模式 | 共享细粒度对象 |
| 代理模式 | 控制对象访问 |
行为型模式
涉及对象间通信和职责分配。
| 模式 | 说明 |
|---|---|
| 职责链模式 | 沿链传递请求 |
| 命令模式 | 封装请求为对象 |
| 迭代器模式 | 顺序访问集合元素 |
| 中介者模式 | 封装对象间交互 |
| 备忘录模式 | 保存和恢复对象状态 |
| 观察者模式 | 一对多依赖通知 |
| 状态模式 | 状态改变时改变行为 |
| 策略模式 | 封装可互换算法 |
| 模板方法模式 | 父类定义算法骨架 |
| 访问者模式 | 不改变结构增加操作 |
SOLID 原则
| 原则 | 说明 |
|---|---|
| 单一职责(SRP) | 类只有一个变化原因 |
| 开闭原则(OCP) | 对扩展开放,对修改关闭 |
| 里氏替换(LSP) | 子类可替换父类 |
| 接口隔离(ISP) | 为不同客户端定义不同接口 |
| 依赖倒置(DIP) | 依赖抽象而非具体实现 |
反模式
- 大泥球:无结构的混乱代码
- 神对象:承担过多职责的类
- 单例滥用:不当使用单例导致全局状态
设计模式价值
- 提供标准术语,便于团队沟通
- 重用经过验证的解决方案
- 提高代码可维护性和扩展性
张芷铭的个人博客
Comments