Beispiel #1
0
        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();
        }