🐸 青蛙编程网
首页 / Python / 设计模式 / 1. 设计模式是什么

1. 设计模式是什么

这是什么:设计模式 = 前人总结的代码套路。针对"这类问题代码该怎么组织"给出标准答案,经典教材《设计模式:可复用面向对象软件的基础》一共收录 23 种,简称 GoF 23(GoF = 四人帮,四位作者的昵称)。

为什么用:小程序随便堆代码都能跑,项目一大就变成"面条地狱"——改一处崩三处、同类代码抄五份、新人看不懂老代码。设计模式就是这些坑的标准解法:不光少走弯路,还能让团队说"这里用观察者"就秒懂彼此。

如何用:本章先看 23 种模式的三大分类地图,再用一个 Python 小例子感受"堆代码"和"用模式"的差别。

一本 1994 年的书,把代码套路起了名字

GoF 把 23 种模式分成三大类,每类回答一个不同的问题:

分类 回答的问题 代表模式
创建型 对象该怎么创建? 单例、工厂、建造者、原型
结构型 类和对象该怎么组装? 适配器、外观、装饰器、代理
行为型 对象之间怎么协作? 策略、观察者

不用背全 23 种——实际开发里高频出现的就是本教程挑的这 10 个,其余的遇到再查。

Python 里的模式是"半隐形"的

同样一个模式,在 Java 里要写一个接口加两个类,在 Python 里可能一行函数就搞定。比如策略模式(把算法做成可替换的),Java 要定义策略接口,Python 直接传函数:

def vip_price(price):          # 一个策略
    return round(price * 0.8, 2)

def new_user_price(price):     # 另一个策略
    return round(price * 0.9, 2)

def checkout(price, strategy): # 策略作为参数传进去
    return strategy(price)

print(checkout(100, vip_price))
print(checkout(100, new_user_price))

你会看到:

80.0
90.0

checkout 一行没改,计价方式随便换——这就是策略模式的全部思想,Python 用函数是一等公民这个特性免费送给你了。类似地:Python 的模块天然是单例,@decorator 语法是装饰器模式的语言级落地。

所以学设计模式在 Python 里有两条线:模式思想(为什么要这么组织)永远不过时,实现代码(Java 式的接口+类)很多可以大幅简化。本教程两样都讲:先写出模式的标准形态,再给 Python 的地道简化写法。

本章解读

说法 意思
GoF 23 经典教材收录的 23 种模式
创建型 管对象的"出生":造几个、谁来造、怎么造
结构型 管类和对象的"组装":怎么拼起来、怎么对接
行为型 管对象的"协作":谁通知谁、算法怎么换
一等公民 函数可以像普通值一样传来传去、存进变量

记忆口诀

创建管出生,结构管组装,行为管协作;Java 写类,Python 传函数。

动手改

  1. 给 checkout 再写一个策略 black_friday_price:直接打五折,算算 100 元结多少
  2. 把 GoF 三大类的表格抄一遍,盖住答案凭记忆填"代表模式"那列
  3. 翻翻你写过的一段代码,找一处"每次加需求都要改动老代码"的地方——这就是模式的用武之地

下一章:创建型模式:单例与工厂 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。