备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。
#include <iostream>
#include <string>
using namespace std;
class Memento{
public:
Memento(const string& s):state(s){}
string getState()const{return state;}
void setState(const string& s){state = s;}
private:
string state;
};
class Origin{
public:
Origin(){}
Memento createMemento(){
Memento m(state);
return m;
}
void setMementto(const Memento& m){
state = m.getState();
}
private:
string state;
};
int main(int argc, char *argv[])
{
Origin origin;
//存储到备忘录
Memento men = origin.createMemento();
//改变origin状态... ...
//从备忘录中恢复
origin.setMementto(men);
return 0;
}