闽公网安备 35020302035485号
Caretaker(看管人):负责在适当的时间保存和恢复Originator对象的状态。
public class Originator
{
private string _state;
public void SetState(string state)
{
this._state = state;
}
public Memento SaveStateToMemento()
{
return new Memento(_state);
}
public void GetStateFromMemento(Memento memento)
{
_state = memento.GetState();
}
}
public class Memento
{
// 堆代码 duidaima.com
private readonly string _state;
public Memento(string state)
{
this._state = state;
}
public string GetState()
{
return _state;
}
}
public class CareTaker
{
private readonly List<Memento> _mementoList = new List<Memento>();
public void Add(Memento state)
{
_mementoList.Add(state);
}
public Memento Get(int index)
{
return _mementoList[index];
}
}
代码示例的使用:Originator originator = new Originator();
CareTaker careTaker = new CareTaker();
originator.SetState("State #1");
originator.SetState("State #2");
careTaker.Add(originator.SaveStateToMemento());
originator.SetState("State #3");
careTaker.Add(originator.SaveStateToMemento());
originator.SetState("State #4");
Console.WriteLine("Current State: " + originator.GetState());
originator.GetStateFromMemento(careTaker.Get(0));
Console.WriteLine("First saved State: " + originator.GetState());
originator.GetStateFromMemento(careTaker.Get(1));
Console.WriteLine("Second saved State: " + originator.GetState());
结论