예제 #1
0
파일: Program.cs 프로젝트: alisherKAK/DP
        static void Main(string[] args)
        {
            // Клиентский код.
            Originator originator = new Originator("Super-duper-super-puper-super.");
            Caretaker  caretaker  = new Caretaker(originator);

            caretaker.Backup();
            originator.DoSomething();

            caretaker.Backup();
            originator.DoSomething();

            caretaker.Backup();
            originator.DoSomething();

            Console.WriteLine();
            caretaker.ShowHistory();

            Console.WriteLine("\nClient: Now, let's rollback!\n");
            caretaker.Undo();

            Console.WriteLine("\n\nClient: Once more!\n");
            caretaker.Undo();

            Console.WriteLine();
        }
예제 #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Memento");
            Console.WriteLine("Memento and Command Example");

            var originator = new Originator(0);
            var caretaker  = new Caretaker(originator);

            // 1 + 2 + 3 + 4 + 5 = 15 (state)
            for (var i = 1; i <= 5; i++)
            {
                originator.Add(i);
            }
            caretaker.Backup();

            // 15 - 10 = 5 (state)
            originator.Subtract(10);
            caretaker.Backup();

            // 5 * 8 = 40 (state)
            originator.MultiplyBy(8);
            caretaker.Backup();

            // 40 / 20 = 2 (state)
            originator.DivideBy(20);
            caretaker.Backup();

            for (int i = 0; i <= 10; i++)
            {
                caretaker.RestorePreviousState();
            }
        }