保存一个对象的内部状态,在对象改变后,可以恢复到原先保存的状态。
代码示例:
class Originator
{
private:
string _state;
public:
void set(const string &state)
{
_state = state;
cout << "Originator:Setting state to " << _state << endl;
}
Memento* saveToMemento()
{
cout << "Originator:Saving to Memento." << endl;
return new Memento(_state);
}
void restoreFromMemmento(const Memento* memento)
{
_state = memento->getSavedState();
cout << "Originator:State after restoring from memento:" << _state << endl;
}
};
class Memento
{
private:
string _state;
public:
Memento(const string &state)
{
_state = state;
}
string getSavedState()
{
return _state;
}
};
void main()
{
Originator org;
org.set("state1");
org.set("state2");
Memento *mem = org.saveToMemento();
org.set("state3");
org.restoreFromMemento(mem);
delete mem;
}
本文介绍了一种软件设计模式——备忘录模式,通过代码示例详细解释了如何保存对象的状态并在需要时恢复这些状态。该模式对于实现撤销操作、事务回滚等功能非常有用。
647

被折叠的 条评论
为什么被折叠?



