设计模式的分类与原则
在上一章,我们弄清楚了什么是设计模式以及为什么 Python 也需要设计模式。
本篇我们进一步梳理设计模式的整体结构,让你对设计模式体系有一个全局认知。
一、设计模式的三大分类
经典的 GoF(Gang of Four)设计模式将模式分为三大类:创建型、结构型、行为型。这是理解设计模式体系最重要的基础。
1. 创建型模式(Creational Patterns)
关注点:如何更合理地创建对象。
主要解决的问题:
- 复杂对象如何创建?
- 如何避免在代码中散落大量
new或类()实例化? - 如何做到可扩展、可替换?
常见创建型模式:
| 模式 | 作用 |
|---|---|
| 单例模式 (Singleton) | 保证一个类只有一个实例 |
| 工厂方法 (Factory Method) | 延迟创建对象,让子类决定实例化谁 |
| 抽象工厂 (Abstract Factory) | 创建一系列相关对象,隔离具体实现 |
| 建造者模式 (Builder) | 分步骤创建复杂对象 |
| 原型模式 (Prototype) | 通过复制已有对象来创建新对象 |
Python 的动态语言特性,使得这些模式的实现更加灵活,但思想完全一致。
2. 结构型模式(Structural Patterns)
关注点:如何组织类与对象,使结构更稳定、更灵活。
主要解决的问题:
- 如何让类之间的关系更加清晰、可复用?
- 如何简化复杂系统的外部使用方式?
常见结构型模式:
| 模式 | 作用 |
|---|---|
| 适配器模式 (Adapter) | 转换接口,让不兼容的组件协作 |
| 装饰器模式 (Decorator) | 动态扩展对象功能 |
| 代理模式 (Proxy) | 控制对象访问,如缓存、权限、延迟加载 |
| 外观模式 (Facade) | 提供统一的高层接口封装复杂系统 |
| 组合模式 (Composite) | 构建树形结构,使单个对象和组合对象统一处理 |
| 桥接模式 (Bridge) | 分离抽象与实现,让两者独立变化 |
| 享元模式 (Flyweight) | 共享对象节省内存 |
🔒 点击解锁完整内容
