当前位置: 首页 > 网络知识

C++ 设计模式之备忘录模式

时间:2026-01-26 14:20:04

设计模式之备忘录模式


备忘录,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。该模式很好理解,其UML图如下:

  在Originator中提供了创建Memento的接口,具体要保存什么样的内容,则根据需求来定。而Caretaker则是负责管理Memento。而保存的内容的具体的组织方式什么的都封装在Memento中了。这样做耦合性很低,方便维护和扩展。示例代码如下:

1 // MemoModel.h文件 2 #pragma once 3 #include <iostream> 4 #include <string> 5 6 class Memo; 7 8 class Originator 9 18 void setState(std::string str) 19 22 void recoverState(Memo * p); 23 }; 24 25 class Memo 26 33 34 }; 35 36 Memo * Originator::createMemo() 37 40 41 void Originator::recoverState(Memo * p) 42 45 46 class Caretaker 47 52 ~Caretaker() 53 57 Memo * getMemo() 58 61 void setMemo(Memo * p) 62 65 };

测试代码如下:

1 #include <iostream> 2 #include "MemoModel.h" 3 4 int main() 5

测试结果如下图:

  备忘录模式把要保存的细节封装在了Memo类中,如果要修改保存细节的话,不会影响到客户端。备忘录模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时。



上一篇:C++ 设计模式之组合模式
下一篇:Qt 插件框架的使用及优化
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素