- 浏览: 369849 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (335)
- C++ (190)
- 设计模式 (43)
- 数据库技术 (5)
- 网络编程 (11)
- 自动化测试 (6)
- Linux (13)
- OpenSSL (10)
- MS Crypt API (5)
- SCM (2)
- English (4)
- Android (10)
- EMV规范 (1)
- Saturn Platform (0)
- C (10)
- SQL (2)
- ASP.NET (3)
- 英语口语学习 (3)
- 调试工具 (21)
- 编译技术 (5)
- UML (1)
- 项目管理 (5)
- 敏捷开发 (2)
- Http Server (6)
- 代码审查、代码分析 (5)
- 面试基础 (10)
- 重点知识 (16)
- STL (6)
- Efficient C++资料 (8)
- 数据结构和算法 (7)
- 读书笔记 (0)
- 开源项目 (4)
- 多线程 (2)
- Console App (6)
- 个人开源项目 (4)
- IBM DevelopWorks (4)
- Java (16)
- 内存泄漏相关调试和检测 (13)
- 软件测试相关技术 (2)
- C# (11)
- Apple Related (1)
- 软件测试和管理 (2)
- EMV (1)
- Python (1)
- Node.js (6)
- JavaScript (5)
- VUE (1)
- Frontend (1)
- Backend (4)
- RESTful API (3)
- Firebase (3)
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
头文件
//MementoPattern.h #ifndef MEMENTO_PATTERN_H #define MEMENTO_PATTERN_H #include <Windows.h> #include <iostream> #include <string> using namespace std; namespace MementoPattern { //备忘者类备份发起者的状态 class Memento { public: //构造的时候备份数据 Memento(string strState):m_strState(strState){ } void SetState(string strState){ m_strState = strState; } friend class Originator; private: string m_strState; }; //发起者类备份自己的状态 class Originator { public: //建立备份 Memento* CreateBackups(){ return new Memento(m_strState); } //恢复备份内容 void RestoreBackups(Memento* pMemento) { m_strState = pMemento->m_strState; } //显示状态 void Show() { cout<<m_strState<<endl; } void SetState(string strState){ m_strState = strState; } private: string m_strState; }; //管理者类管理备份 class Caretaker { public: //得到备份 Memento* GetMemento() { return m_pMemento; } //设置备份 void SetMemento(Memento* pMemento) { m_pMemento = pMemento; } private: Memento* m_pMemento; }; ////////////////////////////////////////////////////////////////////////// void MementoPattern_Test(); } #endif
实现
#include "MementoPattern.h" #include <iostream> using namespace std; namespace MementoPattern { ////////////////////////////////////////////////////////////////////////// void MementoPattern_Test() { //设置和显示状态 Originator o; o.SetState("ON"); o.Show(); //创建备份 Memento* m = o.CreateBackups(); //管理备份 Caretaker c; c.SetMemento(m); //设置和显示状态 o.SetState("OFF"); o.Show(); //恢复备份 m = c.GetMemento(); o.RestoreBackups(m); //显示状态 o.Show(); } }
客户端
#include "MementoPattern.h" #include <iostream> #include <sstream> #include <string> #include <list> using namespace std; using namespace MementoPattern; void main() { MementoPattern_Test(); }
运行结果
- MementoPattern.zip (1.1 KB)
- 下载次数: 0
- Diagram.zip (1.3 MB)
- 下载次数: 0
发表评论
-
FreeRTOS
2022-03-05 16:31 248Ref https://blog.csdn.net/weix ... -
串口通讯相关
2018-11-02 13:44 411https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1325https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 477https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 574// this function create a bmp ... -
Android NDK搭建環境
2017-11-27 13:25 580https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5738583相关资料,整理中... -
Java高级应用之JNI
2017-06-19 09:00 600参考link http://www.cnblogs.com/l ... -
C++实现ping功能
2017-04-18 11:21 2155基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 9061 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1582OpenSSL命令---rsautl http://blog. ... -
[Platform Builder] 设置SVM OS build Env
2016-11-10 11:39 01 copy one OSDesign Project to ... -
[Windows] System Error Codes(GetLastError )0-----5999
2016-10-26 13:28 1881ERROR_SUCCESS 0 (0x0) T ... -
开源Windows驱动程序框架
2016-09-17 21:35 871转自 http://code.csdn.net/news/28 ... -
c/c++代码中执行cmd命令
2016-09-14 14:50 1908转自 http://blog.csdn.net/slixinx ... -
C#使用C++标准DLL实例(包含callback)
2016-09-11 19:44 1086C++编写标准Win32DLL如下 头文件 /***** ... -
C#调用C++的DLL搜集整理的所有数据类型转换方式
2016-09-09 16:07 969转自 http://www.cnblogs.com/zeroo ... -
WinCE CPU使用率计算 测试工具
2016-09-08 16:14 991转自 http://blog.csdn.net/jan ... -
switch在C++与C#中的一些差异
2016-09-08 15:19 810参考链接 http://blog.csdn.net/weiwe ... -
C++ 鼠标模拟程序
2016-09-04 12:09 1612转自 http://blog.csdn.net/weixinh ...
相关推荐
备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到先前的状态。这种模式在需要撤销/重做功能、...
备忘录模式(Memento)是一种行为型设计模式,它允许在不暴露对象的实现细节的情况下,捕获并保存对象的内部状态,从而可以在未来某个时刻恢复到之前的状态。备忘录模式特别适用于实现撤销操作,或是需要进行状态...
备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要记录用户操作历史或者游戏进度...
备忘录模式(Memento Pattern)是软件设计模式中的一种,属于行为模式。它提供了一种方式来恢复对象到之前的状态,即“撤销”操作。备忘录模式的核心思想是保存对象的内部状态,以便在需要时能恢复到这个状态,而...
通过查看这些内容,你可以进一步加深对备忘录模式的理解,并将其应用到自己的项目中。 总的来说,备忘录模式提供了一种优雅的方式去处理对象状态的保存和恢复,保持了对象的封装性,同时也使得代码更易于维护和扩展...
备忘录模式是一种行为设计模式,它允许对象在不破坏封装性的前提下捕获并存储其内部状态,以便稍后恢复到该状态。这种模式常用于在游戏中保存进度、撤销/重做操作、以及在复杂业务逻辑中保存中间计算结果等场景。 ...
备忘录模式(Memento Pattern)是软件设计模式中的一种行为模式,它的主要目的是在不破坏对象封装性的前提下,允许对象在特定时刻保存其内部状态,并能够在之后恢复到保存时的状态。这种模式广泛应用于撤销/重做功能...
备忘录模式(Memento Pattern)是设计模式中的一种行为模式,主要目的是在不违反封装原则的情况下,保存一个对象的内部状态,以便在需要时能够恢复到先前的状态。这种模式通常用于实现撤销/重做功能或者在游戏中保存...
备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要撤销/重做操作的场景,或者在...
备忘录模式是一种在软件工程领域广泛使用的设计模式,它属于行为设计模式,主要目的是为了在不破坏对象封装性的前提下,保存一个对象的内部状态,以便在需要时能够恢复到之前的状态。这个模式通常应用于撤销/重做...
7. **备忘录模式**:在不破坏封装的前提下,捕获对象的内部状态,以便之后恢复对象状态。 8. **状态模式**:允许对象在其内部状态改变时改变其行为,对象看起来似乎修改了它的类。 9. **访问者模式**:定义一个访问...
备忘录模式是一种设计模式,属于行为设计模式的范畴,它的主要目的是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象到先前的状态。这种模式在许多场景下都非常有用...
备忘录模式是其中的一种,它允许在不破坏封装性的前提下,捕获和恢复一个对象的内部状态。这种模式常用于需要保存和恢复对象状态的情景,例如撤销/重做功能或者游戏存档。 **备忘录模式**的关键组件包括发起者...
其次,事件驱动编程是桌面应用开发的常见模式,备忘录软件也不例外。在C#中,用户界面控件如按钮、文本框等都有对应的事件,当用户进行操作时,这些事件会被触发并调用相应的处理函数。例如,点击“新增”按钮可能...
这份源码“EverMemo-master”提供了一个完整的Android备忘录应用的实现,是深入理解Android开发,尤其是Android应用架构设计、UI构建以及数据存储的理想学习材料。 1. **项目结构分析** - `EverMemo-master`目录...