2025-09-26
访问者模式是一种行为型设计模式,其核心思想是:将 “数据结构” 与 “数据操作” 解耦,定义一个 “访问者” 对象,封装对数据结构中元素的操作逻辑;数据结构中的元素提供 “接受访问者” 的接口,允许访问者在不修改元素类的前提下,灵活扩展对元素的操作。
该模式的本质是 “分离算法与数据结构”—— 当需要对同一批元素执行多种不同操作(如统计、打印、过滤)时,无需...
阅读全文
2025-09-26
状态模式是一种行为型设计模式,其核心思想是:当一个对象的内部状态改变时,它的行为也会随之改变,就像对象的 “类” 发生了变化一样。该模式通过将对象不同状态对应的行为封装到独立的 “状态类” 中,让对象在不同状态下切换时,只需切换对应的状态对象,而非通过大量if-else或switch判断状态。
状态模式的本质是 “将状态与行为绑定,并用状态对象管理状态切换”...
阅读全文
2025-09-26
观察者模式是一种行为型设计模式,其核心思想是定义 “一对多” 的依赖关系:当一个对象(称为 “主题 / 被观察者”)的状态发生变化时,所有依赖于它的对象(称为 “观察者”)会自动收到通知并进行更新。
该模式的本质是 “解耦主题与观察者” —— 主题无需知道具体有哪些观察者,只需维护一个观察者列表;观察者也无需了解主题的内部逻辑,只需在收到通知时...
阅读全文
2025-09-26
中介者模式是一种行为型设计模式,其核心思想是通过一个 “中介者” 对象,封装多个对象(称为 “同事对象”)之间的交互关系,使同事对象无需直接相互引用,仅通过中介者传递信息,从而降低对象间的耦合度,简化系统结构。
该模式的本质是 “集中控制交互” —— 将原本分散在多个同事对象之间的复杂交互逻辑,转移到中介者中统一管理,让同事对象专注于自身的核心功能,而非...
阅读全文
2025-09-26
责任链模式是一种行为型设计模式,其核心思想是将多个 “处理器”(负责处理特定请求的对象)串联成一条 “链”,当请求产生时,请求会沿着这条链依次传递,直到某个处理器能够处理该请求并返回结果,或请求到达链的末端仍未被处理(可选择默认处理或忽略)。
该模式的本质是解耦 “请求的发送者” 和 “请求的处理者”—— 发送者无需知道哪个处理器会处理请求,只需将请求传...
阅读全文
2025-09-26
迭代器模式(Iterator Pattern)是一种行为型设计模式,它的核心是提供一种统一的方式遍历聚合对象(如集合、列表)中的元素,同时隐藏聚合对象的内部结构。通过引入 “迭代器” 角色,将 “遍历逻辑” 与 “聚合对象” 解耦,让聚合对象无需暴露内部实现即可支持遍历。
简单来说,迭代器模式就像 “快递员取件”—— 快递员(迭代器)按固定流程(hasN...
阅读全文
2025-09-25
备忘录模式(Memento Pattern)是一种行为型设计模式,它的核心作用是在不破坏对象封装性的前提下,捕获并存储对象的内部状态,以便后续需要时能将对象恢复到之前的状态。
简单来说,备忘录模式就像 “游戏存档”—— 游戏过程中可以随时存档(存储当前状态),遇到失败时可以读档(恢复到之前的状态),且存档过程不会暴露游戏内部的复杂数据结构。
备忘录模式的...
阅读全文
2025-09-25
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来并使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端,从而实现灵活的算法切换。
简单来说,策略模式就像 “出行方式选择”—— 去同一个目的地可以选择步行、骑车、开车等不同策略,这些策略(算法)可根据情况随时切换,而不影响出行的目标。
策略模...
阅读全文
2025-09-25
模板模式(Template Pattern)是一种行为型设计模式,它定义了一个操作的骨架流程,将某些步骤延迟到子类中实现。核心思想是固定算法结构,灵活定制具体步骤,使得子类可以在不改变算法整体结构的情况下,重写某些特定步骤。
简单来说,模板模式就像 “食谱”—— 食谱规定了做菜的步骤(如准备食材→翻炒→调味→出锅),但具体用什么食材、放多少调料可以由使用者(...
阅读全文
2025-09-25
桥接模式(Bridge Pattern)是一种结构型设计模式,它的核心是将抽象部分与实现部分分离,使它们可以独立变化。通过引入一个 “桥接” 接口,将两个维度的变化解耦,避免因多维度扩展导致的类爆炸问题。
简单来说,桥接模式就像 “遥控器与电器” 的关系 —— 遥控器(抽象部分)和电器(实现部分)可以独立变化:遥控器可以是红外、蓝牙等类型,电器可以是电视...
阅读全文