static void Main(string[] args) { // Create an originator. var originator = new Originator <SalesProspect>(); // Create a caretaker with passed originator instance. var caretaker = new Caretaker <SalesProspect>(originator); // Create sales prospect var salesProspect1 = new SalesProspect("SalesProspect1", "7760", 25000); var salesProspect2 = new SalesProspect("SalesProspect2", "1210", 11000); var salesProspect3 = new SalesProspect("SalesProspect3", "2584", 50000); // Set state to salesProspect1. originator.SetState(salesProspect1); // Save state. var memento1 = caretaker.Save(); // Set state to salesProspect2. originator.SetState(salesProspect2); var memento2 = caretaker.Save(); // Set state to salesProspect3. originator.SetState(salesProspect3); var memento3 = caretaker.Save(); // Restore state back to salesProspect2. caretaker.Restore(memento2); // Restore state back to salesProspect1. caretaker.Restore(memento1); Console.Read(); }
static void Main(string[] args) { //何时使用:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有"后悔药"可吃。 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()); Console.ReadLine(); }