예제 #1
0
        static void Main(string[] args)
        {
            Originator originator = new Originator(new State("Initial state", 20));

            Console.WriteLine("Originator's states (we add 4 states and save first 3 of them in the caretaker): ");

            originator.PrintState();
            Caretaker caretaker = new Caretaker(originator);

            caretaker.Save();

            originator.ChangeState(new State("Second state", 21));
            originator.PrintState();

            caretaker.Save();

            originator.ChangeState(new State("Third state", 22));
            originator.PrintState();

            caretaker.Save();

            originator.ChangeState(new State("Fourth state", 22));
            originator.PrintState();

            Console.WriteLine();

            PrintMementoes(caretaker);

            Console.WriteLine("UNDO THE LAST CHANGE");
            caretaker.Undo();

            Console.WriteLine("Mementoes after undo: ");
            PrintMementoes(caretaker);

            Console.WriteLine();

            Console.WriteLine("Originator's state after undo: ");
            originator.PrintState();

            Console.WriteLine();
            Console.WriteLine("Press any key to continue");
            Console.ReadKey(true);
        }
예제 #2
0
 public Caretaker(Originator originator)
 {
     this.originator = originator;
     mementoes       = new List <IMemento>();
     index           = 0;
 }