1.使用场景:程序回溯到对象之前的某个状态
2.定义:在不破坏封装的前提下,捕获一个对象的内部状态
,并在该对象之外保存这个状态,
这样可以将该对象恢复到原先保存的状态
Memento设计模式代码:
class Memento
{
string state;
//..
public:
Memento(const string & s) : state(s) {}
string getState() const { return state; }
void setState(const string & s) { state = s; }
};
class Originator
{
string state;
//....
public:
Originator() {}
Memento createMomento() {
Memento m(state);
return m;
}
void setMomento(const Memento & m) {
state = m.getState();
}
};
int main()
{
Originator orginator;
//捕获对象状态,存储到备忘录
Memento mem = orginator.createMomento();
//... 改变orginator状态
//从备忘录中恢复
orginator.setMomento(memento);
}