设计模式的分类与原则

在上一章,我们弄清楚了什么是设计模式以及为什么 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) 共享对象节省内存

其中装饰器模式在 Python 中非常高频,因为 Python 原生支持函数装饰器。


3. 行为型模式(Behavioral Patterns)

关注点:对象之间如何协作与通信。

主要解决的问题:

  • 如何减少对象之间复杂的耦合?
  • 如何让行为可以灵活替换、组合或扩展?

常见行为型模式:

模式 作用
策略模式 (Strategy) 把不同算法封装成独立类,支持动态替换
观察者模式 (Observer) 事件通知机制(发布-订阅)
状态模式 (State) 用对象管理状态转换,避免大量 if-else
责任链模式 (Chain of Responsibility) 请求沿链条传递,直至被处理
命令模式 (Command) 将操作封装成对象,支持撤销与重做
迭代器模式 (Iterator) 统一遍历集合的方式
模板方法 (Template Method) 定义算法骨架,子类填空实现
访问者模式 (Visitor) 分离算法与对象结构的关系
中介者模式 (Mediator) 统一处理对象间通信,减少耦合
解释器模式 (Interpreter) 构建简单语言解释器






次阅读

扫描下方二维码,关注公众号:程序进阶之路,实时获取更多优质文章推送。


扫码关注

评论