// MementoPattern.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Memento
{
private:
string m_state;
public:
Memento()
{
m_state = "";
}
Memento(string state) :m_state(state) {}
void setState(string state)
{
m_state = state;
}
string getState()
{
return m_state;
}
};
class Originator
{
private:
string m_state;
public:
Originator()
{
m_state = "";
}
string getState()
{
return m_state;
}
void setState(string state)
{
m_state = state;
}
Memento creatMemento()
{
return Memento(this->m_state);
}
void restoreMemento(Memento memento)
{
this->setState(memento.getState());
}
};
class Caretaker
{
private:
Memento m_memento;
public:
Memento getMemento()
{
return m_memento;
}
void setMemento(Memento memento)
{
m_memento = memento;
}
};
int main()
{
Originator ori;
ori.setState("state1");
cout << "初始状态:" << ori.getState() << endl;
Caretaker car;
car.setMemento(ori.creatMemento());
ori.setState("state2");
cout << "改变后的状态:" << ori.getState() << endl;
ori.restoreMemento(car.getMemento());
cout << "恢复初始状态:" << ori.getState() << endl;
return 0;
}
备忘录模式-c++实现
最新推荐文章于 2023-04-19 11:43:29 发布