예제 #1
0
        static bool TestMementoPattern()
        {
            Console.WriteLine("TESTING THE MEMENTO DESIGN PATTERN: ");

            Originator <StateObject> current = new Originator <StateObject>();

            current.SetState(new StateObject {
                Id = 1, Name = "Object 1"
            });
            CareTaker <StateObject> .SaveState(current);

            current.ShowState();

            current.SetState(new StateObject {
                Id = 2, Name = "Object 2"
            });
            CareTaker <StateObject> .SaveState(current);

            current.ShowState();

            current.SetState(new StateObject {
                Id = 3, Name = "Object 3"
            });
            CareTaker <StateObject> .SaveState(current);

            current.ShowState();

            Console.WriteLine("Restoring the first state");

            CareTaker <StateObject> .RestoreState(current, 0);

            current.ShowState();

            return(true);
        }
예제 #2
0
        private static void BehavioralPaterns()
        {
            #region Chain of Responsability
            Console.WriteLine("Chain of reasponsability");

            Handler h1 = new ConcretHandler("Handler 1");
            h1.Condition = (value) => value > -1 && value < 5;

            Handler h2 = new ConcretHandler("Handler 2");
            h2.Condition = (value) => value >= 5 && value < 10;

            Handler h3 = new ConcretHandler("Handler 3");
            h3.Condition = (value) => value > 10 && value < 20;

            h1.Successor = h2;
            h2.Successor = h3;

            foreach (var i in new int[] { 3, 4, 6, 11, 12, 18 })
            {
                h1.HandleRequest(i);
            }
            #endregion

            #region Iterator
            Console.WriteLine("Iterator");

            Aggregate <Iterator> ag = new Aggregate <Iterator>();

            ag[0] = "A";
            ag[1] = "B";
            ag[2] = "C";

            // Creating the iterator based on Aggregate instance
            Iterator it = ag.CreateIterator()  as Iterator;

            object item = it.First();
            while (item != null)
            {
                Console.WriteLine(item);
                item = it.Next();
            }

            #endregion

            #region Mememnto
            Console.WriteLine("Mememnto");

            Originator <StateObject> current = new Originator <StateObject>();
            current.SetState(new StateObject {
                Id = 1, Name = "Object one"
            });
            CareTaker <StateObject> .SaveState(current);

            current.SetState(new StateObject {
                Id = 2, Name = "Object two"
            });
            CareTaker <StateObject> .SaveState(current);

            current.ShowState();

            current.SetState(new StateObject {
                Id = 3, Name = "Object three"
            });
            CareTaker <StateObject> .SaveState(current);

            current.ShowState();

            // restore to specific state
            CareTaker <StateObject> .RestoreState(current, 0);

            current.ShowState();

            #endregion
        }