2025-09-25
备忘录模式(Memento Pattern)是一种行为型设计模式,它的核心作用是在不破坏对象封装性的前提下,捕获并存储对象的内部状态,以便后续需要时能将对象恢复到之前的状态。
简单来说,备忘录模式就像 “游戏存档”—— 游戏过程中可以随时存档(存储当前状态),遇到失败时可以读档(恢复到之前的状态),且存档过程不会暴露游戏内部的复杂数据结构。
备忘录模式的...
阅读全文
2025-09-25
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来并使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端,从而实现灵活的算法切换。
简单来说,策略模式就像 “出行方式选择”—— 去同一个目的地可以选择步行、骑车、开车等不同策略,这些策略(算法)可根据情况随时切换,而不影响出行的目标。
策略模...
阅读全文
2025-09-25
模板模式(Template Pattern)是一种行为型设计模式,它定义了一个操作的骨架流程,将某些步骤延迟到子类中实现。核心思想是固定算法结构,灵活定制具体步骤,使得子类可以在不改变算法整体结构的情况下,重写某些特定步骤。
简单来说,模板模式就像 “食谱”—— 食谱规定了做菜的步骤(如准备食材→翻炒→调味→出锅),但具体用什么食材、放多少调料可以由使用者(...
阅读全文
2025-09-25
桥接模式(Bridge Pattern)是一种结构型设计模式,它的核心是将抽象部分与实现部分分离,使它们可以独立变化。通过引入一个 “桥接” 接口,将两个维度的变化解耦,避免因多维度扩展导致的类爆炸问题。
简单来说,桥接模式就像 “遥控器与电器” 的关系 —— 遥控器(抽象部分)和电器(实现部分)可以独立变化:遥控器可以是红外、蓝牙等类型,电器可以是电视...
阅读全文
2025-09-25
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树形结构,并用统一的方式处理单个对象和对象组合。这种模式让客户端可以忽略单个对象和组合对象的差异,从而对它们进行一致操作。
简单来说,组合模式就像 “文件系统”—— 文件和文件夹可以被统一对待,文件夹中可以包含文件或其他文件夹,形成树形结构,用户可以对任意节点(文件或文...
阅读全文
2025-09-25
享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享已存在的对象来减少内存占用和对象创建开销,特别适合处理大量相似对象的场景。
核心思想是:将对象的属性分为内部状态(可共享,不随环境变化)和外部状态(不可共享,随环境变化),通过共享内部状态相同的对象,来减少系统中对象的数量。
享元模式的UML类图如下:
从图中可以看出
享元工...
阅读全文
2025-09-25
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变原有对象结构的情况下,动态地给对象添加新功能。装饰模式通过创建 “装饰器” 类来包裹原始对象,从而在保持接口一致性的同时,实现功能的扩展。
打个比方,装饰模式就像 “手机壳”—— 手机本身的功能不变,但加上不同的手机壳(装饰器)可以获得防摔、美观、无线充电等额外功能,且可以...
阅读全文
2025-09-25
外观模式(Facade Pattern)是一种结构型设计模式,它为复杂子系统提供一个统一的简化接口,客户端通过这个接口与子系统交互,而无需直接操作子系统中的多个组件。
简单来说,外观模式就像 “前台服务员”—— 当你去餐厅吃饭时,不需要直接和厨房、吧台、保洁等多个部门打交道,只需告诉前台服务员你的需求,由他协调协调内部各部门完成工作。
其UML类图如下:...
阅读全文
2025-09-25
适配器模式(Adapter Pattern)的定义是:它一种结构型设计模式,它的核心作用是将一个类的接口转换成客户端期望的另一个接口,使得原本因接口不兼容而无法一起工作的类能够协同工作。
用一个现实生活中的例子来比喻,我们家里的插座是三项的,但是我们的插头是两项的,这时候可以用一个转换插座把三项的转换成两项的。又比如,我们家里的电源都是220V的,那我要...
阅读全文
2025-09-24
代理模式是一种结构型设计模式,它通过引入“代理对象”来控制原始对象的访问。这个代理对象与我们要访问的原始对象实现相同的接口,然后客户端就可以通过代理对象访问原始对象。那么我们就可以实现在不修改原始对象电的情况下增加额外的功能。比如,实现权限控制、日志记录或者延迟加载等。下面是一个代理模式的UML类图:
在上面的类图中:
Subject:是一个抽象主题,它定...
阅读全文