行为型模式概述
2026/9/12大约 3 分钟
行为型模式概述
行为型模式(Behavioral Pattern)关注对象之间如何分配职责、协作和传递信息,重点处理复杂的流程控制与对象交互问题。如果说创建型模式解决"对象怎么来"、结构型模式解决"对象怎么组织",那么行为型模式解决的就是"对象之间怎么配合"。
GoF 行为型模式包括模板方法、策略、命令、责任链、状态、观察者、中介者、迭代器、访问者、备忘录和解释器 11 种。它们各自解决的问题可以概括如下:
| 模式 | 核心问题 | 一句话概括 |
|---|---|---|
| 模板方法模式 | 流程骨架固定、个别步骤多变怎么办 | 父类定骨架,子类填细节 |
| 策略模式 | 同一问题有多种算法,如何自由切换 | 把算法各自封装,用谁换谁 |
| 命令模式 | 请求的发起者与执行者如何解耦 | 把请求封装成对象,排队、记录、撤销都方便 |
| 责任链模式 | 一个请求要经过多层处理,如何灵活组织 | 处理者手拉手串成链,请求沿链传递 |
| 状态模式 | 对象行为随内部状态改变而改变 | 把每种状态封装成类,状态切换不再堆 if-else |
| 观察者模式 | 一个对象变化,如何自动通知多个依赖对象 | 一对多的订阅-发布,变化时自动通知 |
| 中介者模式 | 多对象两两交互导致关系混乱 | 引入中介统一转发,网状交互变星型 |
| 迭代器模式 | 如何统一遍历不同的聚合对象 | 提供统一的遍历接口,不暴露内部结构 |
| 访问者模式 | 如何在不改动元素类的前提下新增操作 | 把操作抽出来,访问者自己去"访问"元素 |
| 备忘录模式 | 如何保存和恢复对象状态而不破坏封装 | 快照存到外部,需要时再恢复 |
| 解释器模式 | 如何定义一门简单语言并解释执行 | 为文法规则建类,解释器逐条解释 |
本分类的文章如下:
提示
行为型模式的共同套路是"封装变化":把易变的算法(策略)、请求(命令)、状态(状态)、操作(访问者)等各自封装成独立的类,让它们可以独立变化而不影响其他部分。学习中可以反复体会这一点,同时注意对比相似模式的差异,比如状态模式与策略模式类图几乎一样,但状态模式会在内部自动切换状态,策略模式则由客户端主动指定策略。
