设计模式之备忘录模式
10/25/2012 10:22:07 AM
名称:备忘录模式
意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
适用环境:
1、必须保存一个对象的在某一个时记刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。
2、如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并存坏对象的封装性。
classOriginator
{
privatestring_state;
publicstringState
{
get{ return_state; }
set
{
_state = value;
Console.WriteLine("State = "+ _state);
}
}
publicMementoCreateMemento()
{
return(newMemento(_state));
}
publicvoidSetMemento(Mementomemento)
{
Console.WriteLine("Restoring state...");
State = memento.State;
}
}
classMemento
{
privatestring_state;
publicMemento(stringstate)
{
this._state = state;
}
publicstringState
{
get{ return_state; }
}
}
classCaretaker
{
privateMemento_memento;
publicMementoMemento
{
set{ _memento = value; }
get{ return_memento; }
}
}
调用:
Originatoro = newOriginator();
o.State = "On";
Caretakerct = newCaretaker();
ct.Memento = o.CreateMemento();
o.State = "Off";
o.SetMemento(ct.Memento);
输出:
State = On
State = Off
Restoring state...
State = On