#include <iostream>
#include <string>
using namespace std;
class Mememto
{
public:
Mememto() {}
Mememto(string strState) : m_strState(strState) {}
const string& getState() { return m_strState; }
private:
string m_strState;
};
class Originator
{
public:
void setState(string strState) { m_strState = strState; }
void showState() { cout << m_strState << endl; }
Mememto createMemto() { return Mememto(m_strState); }
void setMememto(Mememto objMememto) { m_strState = objMememto.getState(); }
private:
string m_strState = "";
};
class Caretaker
{
public:
void setMememto(Mememto objMememto) { m_objMememto = objMememto; }
Mememto getMememto() { return m_objMememto; }
private:
Mememto m_objMememto;
};
int main()
{
Originator objOriginator;
objOriginator.setState("彳亍");
objOriginator.showState();
Caretaker objCaretaker;
objCaretaker.setMememto(objOriginator.createMemto());
objOriginator.setState("nullptr");
objOriginator.showState();
objOriginator.setMememto(objCaretaker.getMememto());
objOriginator.showState();
return 0;
}
总结:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。如果状态过多,会占用过多的资源
备忘录模式
最新推荐文章于 2021-11-05 09:45:09 发布