[img]https://api5.yunpan.360.cn/intf.php?method=Share.getPublicThumbByNid&qid=108635719&nid=13770720612900431&size=800_600&devtype=web&v=1.0.1&rtick=14676146429127&share_qid=108635719&sign=35a231a5a118e9bbf5376407af1df7d1&[/img]
[img]https://api5.yunpan.360.cn/intf.php?method=Share.getPublicThumbByNid&qid=108635719&nid=14676145749467500&size=800_600&devtype=web&v=1.0.1&rtick=14676146452631&share_qid=108635719&sign=3a796c1ee8fa23e38dc0477615a6d7ee&[/img]
[img]https://api5.yunpan.360.cn/intf.php?method=Share.getPublicThumbByNid&qid=108635719&nid=14676145739462727&size=800_600&devtype=web&v=1.0.1&rtick=14676146458843&share_qid=108635719&sign=7e0b4aad46b013172c95653e58134075&[/img]
[color=red][b]头文件[/b][/color]
[color=red][b]实现[/b][/color]
[color=red][b]客户端[/b][/color]
运行结果
[img]https://api5.yunpan.360.cn/intf.php?method=Share.getPublicThumbByNid&qid=108635719&nid=14676145999492298&size=800_600&devtype=web&v=1.0.1&rtick=14676146459049&share_qid=108635719&sign=f81047e343fe2795f96343a552af2e23&[/img]
[img]https://api5.yunpan.360.cn/intf.php?method=Share.getPublicThumbByNid&qid=108635719&nid=14676145749467500&size=800_600&devtype=web&v=1.0.1&rtick=14676146452631&share_qid=108635719&sign=3a796c1ee8fa23e38dc0477615a6d7ee&[/img]
[img]https://api5.yunpan.360.cn/intf.php?method=Share.getPublicThumbByNid&qid=108635719&nid=14676145739462727&size=800_600&devtype=web&v=1.0.1&rtick=14676146458843&share_qid=108635719&sign=7e0b4aad46b013172c95653e58134075&[/img]
[color=red][b]头文件[/b][/color]
//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
[color=red][b]实现[/b][/color]
#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();
}
}
[color=red][b]客户端[/b][/color]
#include "MementoPattern.h"
#include <iostream>
#include <sstream>
#include <string>
#include <list>
using namespace std;
using namespace MementoPattern;
void main()
{
MementoPattern_Test();
}
运行结果
[img]https://api5.yunpan.360.cn/intf.php?method=Share.getPublicThumbByNid&qid=108635719&nid=14676145999492298&size=800_600&devtype=web&v=1.0.1&rtick=14676146459049&share_qid=108635719&sign=f81047e343fe2795f96343a552af2e23&[/img]