Appearance
5.0 简介:行为型模式 (Behavioral Patterns)
欢迎来到设计模式的最后一个主要类别——行为型模式。这是最庞大,也是最关注对象动态交互的一类模式。
我们已经走过了很长的路:
- 创建型模式:解决了对象“从哪里来”(如何创建)的问题。
- 结构型模式:解决了对象“长什么样”(如何组装)的问题。
现在,我们面临着最后,也是最关键的问题:
“对象们创建并组装好之后,它们之间应该如何沟通、如何协作、如何分配责任,才能构成一个高效、灵活的整体?”
这就是行为型模式要回答的核心问题。
一、问题的根源:对象间的“沟通混乱”
在一个简单的系统中,对象间的交互可能很直接:对象 A 调用对象 B 的方法,对象 B 再调用对象 C 的方法。但随着系统规模的扩大,这种直接的、硬编码的调用关系会迅速演变成一张错综复杂的“蜘蛛网”。
这会导致:
- 高度耦合:每个对象都对其他许多对象的接口有深入的了解。修改一个对象,可能会像多米诺骨牌一样,引发对其他所有相关对象的修改。
- 职责不清:一个操作的完整流程可能分散在许多不同的对象中,很难追踪一个请求从开始到结束到底发生了什么。
- 难以扩展:当需要为这个复杂的交互流程增加一个新的步骤或改变一个现有步骤时,会发现无从下手,因为到处都是紧密相连的硬编码。
二、核心思想:标准化“团队协作策略”
所有行为型模式的“初心”,都是为了解决“沟通混乱”和“职责不清”的问题。
它们的核心思想是:
将对象间通用的、可复用的交互模式抽象出来,进行标准化,从而实现对象间的解耦。
核心比喻:高效的团队协作
想象一个高效的团队,而不是一个混乱的作坊。
- 混乱的作坊:每个人都和其他所有人随意沟通,职责交叉,效率低下。
- 高效的团队:
- 有明确的审批流程:一个报销单会沿着“员工 -> 经理 -> 总监”的路线传递。(责任链模式)
- 有应对不同情况的预案:市场向好时执行 A 方案,市场遇冷时执行 B 方案。(策略模式)
- 有标准化的工作流程:每个新功能的开发都遵循“需求分析 -> 设计 -> 编码 -> 测试”的固定步骤,但每一步的具体内容可以不同。(模板方法模式)
- 有内部的邮件订阅系统:发布一个通知,所有订阅了的员工都会收到。(观察者模式)
行为型模式,就是软件世界里的这些成熟的“团队协作策略”和“沟通流程”。
三、本章学习地图
在本章,我们将学习以下几个最经典、最实用的行为型模式:
策略模式 (Strategy Pattern)
- 一句话简介:准备一沓“锦囊妙计”,根据不同情况,抽出一个来使用。
迭代器模式 (Iterator Pattern)
- 一句话简介:提供一个统一的“遥控器”,让你能遍历任何类型的集合(数组、Map、Set 等)而无需关心其内部结构。
模板方法模式 (Template Method Pattern)
- 一句话简介:定义一个“标准作业流程”(SOP),其中的某些具体步骤可以由子类自己去实现。
命令模式 (Command Pattern)
- 一句话简介:将一个请求封装成一个“指令对象”,从而可以传递、排队、撤销这个指令。
责任链模式 (Chain of Responsibility Pattern)
- 一句话简介:像“击鼓传花”或“层层上报”,一个请求在一个对象链中传递,直到有一个对象能处理它为止。
我们之前在“核心入门模式”中学过的 观察者模式 也属于行为型模式。掌握了它们,你将学会如何组织出清晰、灵活、高内聚、低耦合的系统行为。