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());结论