备忘录模式
2015-12-21 13:05
393 查看
// ConsoleApplication19.cpp : Defines the entry point for the console application. // #include "stdafx.h" //C++后面使用的类要先声明? /*负责存储GameRole对象的内部状态,并可防止GameRole以外的其他对象访问备忘录Memento。 备忘录有两个接口,Caretaker只能看见备忘录的窄借口,他只能将备忘录传递给其他对象。 Originator能够看到一个宽接口,允许他访问返回到先前状态所需的所有数据*/ class Memento { public: int m_atk; int m_magic; int m_bld; Memento(int a,int m,int b) { this->m_atk = a; this->m_magic = m; this->m_bld = b; } }; /*负责创建一个备忘录Memento,用以记录当前时刻它的内部状态, 并可使用备忘录恢复内部状态。GameRole可根据需要决定Memento 存储GameRole的哪些内部状态*/ class GameRole { public: int atk; int magicNum; int bldNum; GameRole(int a,int m,int b) { this->atk = a; this->bldNum = b; this->magicNum = m; } void RecoveryDataFrom(Memento* m) { atk = m->m_atk; magicNum = m->m_magic; bldNum = m->m_bld; } Memento* SetMementoData() { return new Memento(atk,magicNum,bldNum); } void Show() { cout<<atk<<magicNum<<bldNum<<endl; } }; /*负责保存好备忘录Memento,不能对备忘录的内容进行操作或检查*/ class Caretaker { public: Memento *m; }; int _tmain(int argc, _TCHAR* argv[]) { GameRole *gr = new GameRole(100,100,100); gr->Show(); Caretaker *m = new Caretaker(); m->m = gr->SetMementoData(); gr->atk =80; gr->Show(); gr->RecoveryDataFrom(m->m); gr->Show(); return 0; }
相关文章推荐
- C#备忘录模式(Memento Pattern)实例教程
- Python中利用函数装饰器实现备忘功能
- 基于jQuery带备忘录功能的日期选择器
- 《JAVA与模式》之备忘录模式
- 华为5700交换机配置命令备忘录
- 将三星手机备忘录vnt格式文件转为txt格式备份
- 备忘录:记录网上的一些资源的备忘录
- 在mac上合并备忘录
- Memento(备忘录)设计模式
- [设计模式笔记]三. 行为型模式--20. Memento模式(备忘录)对象行为型模式(一)
- IOS设计模式学习(23)备忘录
- GoF23种设计模式之行为型模式之备忘录模式
- 备忘录
- 注册本地通知【闹钟,备忘录】
- JAVA并发包备忘录
- 一个非常好用的桌面备忘录
- 对动态规划的一些看法
- WinPE备忘录
- 磁盘备忘录
- 磁盘备忘录