Esempio n. 1
0
        static void VisitorTester()
        {
            #region sample 1
            // Setup structure
            ObjectStructure o = new ObjectStructure();
            o.Attach(new ConcreteElementA());
            o.Attach(new ConcreteElementB());

            // Create visitor objects
            ConcreteVisitor1 v1 = new ConcreteVisitor1();
            ConcreteVisitor2 v2 = new ConcreteVisitor2();

            // Structure accepting visitors
            o.Accept(v1);
            o.Accept(v2);
            #endregion

            #region sample 2
            // Setup employee collection
            EmployeeVs e = new EmployeeVs();
            e.Attach(new ClerkV());
            e.Attach(new DirectorV());
            e.Attach(new PresidentV());

            // Employees are 'visited'
            e.Accept(new IncomeVisitor());
            e.Accept(new VacationVisitor());
            #endregion
        }
Esempio n. 2
0
        // "Visitor"

        // "ConcreteVisitor1"
        public void TestVisitorPattern()
        {
            // Setup structure

            Element aE = new ConcreteElementA();
            Element bE = new ConcreteElementB();
            var     o  = new ObjectStructure();

            o.Attach(aE);
            o.Attach(bE);


            // Create visitor objects
            var v1 = new ConcreteVisitor1();
            var v2 = new ConcreteVisitor2();

            // Structure accepting visitors
            o.Accept(v1);
            o.Accept(v2);

            o.Detach(aE);
            o.Detach(bE);
            // Wait for user
            Console.Read();
        }
Esempio n. 3
0
        public static void Test()
        {
            var os = new ObjectStructure();
            os.Attach(new ConcreteElementA());
            os.Attach(new ConcreteElementB());

            os.Accept(new ConcreteVisitorA());
            os.Accept(new ConcreteVisitorB());
        }
Esempio n. 4
0
            void Main()
            {
                var structure = new ObjectStructure();

                structure.Add(new ElementA());
                structure.Add(new ElementB());
                structure.Accept(new ConcreteVisitor1());
                structure.Accept(new ConcreteVisitor2());
            }
Esempio n. 5
0
        public UseCase()
        {
            ObjectStructure structure = new ObjectStructure();

            structure.Add(new ConcreteElementOne());
            structure.Add(new ConcreteElementTwo());
            structure.Accept(new ConcreteVisitorOne());
            structure.Accept(new ConcreteVisitorTwo());
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            //Hero h = new Ninja();
            //HeroDecorator hd1 = new Knife();
            //HeroDecorator hd3 = new Knife();
            //HeroDecorator hd2 = new Armor();


            //hd1.SetComponent(h);
            //hd2.SetComponent(hd1);
            //hd3.SetComponent(hd2);
            //var a = hd3.getArmor();
            //var b = hd3.getDamage();



            //TV receiver = new TV();
            //Remote invoker = new Remote();
            //Commanda command = new VolumeUp(receiver);

            //invoker.SetCommand(command);
            //invoker.Invoke();


            //Context cont = new Context();
            //Strategy.Strategy qstrategy = new QuickSort();
            //Strategy.Strategy istrategy = new InsertionSort();

            //cont.SetStrategy(qstrategy);

            Visitor.Visitor v1 = new ConcreteVisitorA();
            Visitor.Visitor v2 = new ConcreteVisitorB();
            Visitor.Person  s  = new Student();
            Visitor.Person  p  = new Profesor();

            ObjectStructure o = new ObjectStructure();

            o.Attach(s);
            o.Attach(p);

            o.Accept(v1);
            o.Accept(v2);

            ChatMediator m  = new ChatMediator();
            User1        u1 = new User1(m);
            User2        u2 = new User2(m);

            m.user1 = new User1(m);
            m.user2 = new User2(m);



            Console.ReadLine();
        }
Esempio n. 7
0
    public Client()
    {
        ObjectStructure o = new ObjectStructure();
        o.Attach(new ConcreteElementA());
        o.Attach(new ConcreteElementB());

        ConcreteVisitor1 v1 = new ConcreteVisitor1();
        ConcreteVisitor2 v2 = new ConcreteVisitor2();

        o.Accept(v1);
        o.Accept(v2);
    }
Esempio n. 8
0
        private static void Main()
        {
            var structure = new ObjectStructure();

            structure.Add(new ElementA());
            structure.Add(new ElementB());

            structure.Accept(new Visitor1());
            structure.Accept(new Visitor2());

            Console.ReadKey();
        }
Esempio n. 9
0
        static void Main(string[] args)
        {
            ObjectStructure o = new ObjectStructure();

            o.Attach(new ConcreteElementA());
            o.Attach(new ConcreteElementB());

            ConcreteVisitor1 v1 = new ConcreteVisitor1();
            ConcreteVisitor2 v2 = new ConcreteVisitor2();

            o.Accept(v1);
            o.Accept(v2);
        }
Esempio n. 10
0
        public static void VisitorPattern()
        {
            ObjectStructure o = new ObjectStructure();

            o.Attach(new ConcreteElementA());
            o.Attach(new ConcreteElementB());

            ConcreteVisittor1 v1 = new ConcreteVisittor1();
            ConcreteVisittor2 v2 = new ConcreteVisittor2();

            o.Accept(v1);
            o.Accept(v2);
        }
Esempio n. 11
0
        static void Main(string[] args)
        {
            ObjectStructure o = new ObjectStructure();

            o.Attach(new ConcreteElementA());
            o.Attach(new ConcreteElementB());

            ConcreteVisitor1 v1 = new ConcreteVisitor1();
            ConcreteVisitor2 v2 = new ConcreteVisitor2();

            o.Accept(v1);
            o.Accept(v2);
        }
Esempio n. 12
0
    static void Main()
    {
        ObjectStructure o = new ObjectStructure();

        o.Attach(new ConcreteElementA());
        o.Attach(new ConcreteElementB());
        ConcreteVisitor1 v1 = new ConcreteVisitor1();
        ConcreteVisitor2 v2 = new ConcreteVisitor2();

        o.Accept(v1);
        o.Accept(v2);
        Console.ReadKey();
    }
Esempio n. 13
0
        static void Main(string[] args)
        {
            ObjectStructure objectStructure = new ObjectStructure();

            objectStructure.Attach(new ConcreteElementA());
            objectStructure.Attach(new ConcreteElementB());

            ConcreteVisitor1 concreteVisitor1 = new ConcreteVisitor1();
            ConcreteVisitor2 concreteVisitor2 = new ConcreteVisitor2();

            objectStructure.Accept(concreteVisitor1);
            objectStructure.Accept(concreteVisitor2);
        }
Esempio n. 14
0
        static void Main(string[] args)
        {
            ObjectStructure objectStructure = new ObjectStructure();

            objectStructure.Add(new ConcreteElementA());
            objectStructure.Add(new ConcreteElementB());

            ConcreteVisitor1 cea = new ConcreteVisitor1();
            ConcreteVisitor2 ceb = new ConcreteVisitor2();

            objectStructure.Accept(cea);
            objectStructure.Accept(ceb);
            Console.ReadKey();
        }
Esempio n. 15
0
            private static void Test()
            {
                var o = new ObjectStructure();

                o.Attach(new ConcreteElementA());
                o.Attach(new ConcreteElementB());

                var v1 = new ConcreteVisitor1();
                var v2 = new ConcreteVisitor2();

                o.Accept(v1);
                o.Accept(v2);

                Console.ReadKey();
            }
Esempio n. 16
0
        public void Run()
        {
            // Setup structure
            var o = new ObjectStructure();

            o.Attach(new ConcreteElementA());
            o.Attach(new ConcreteElementB());
            // Create visitor objects
            var v1 = new ConcreteVisitor1();
            var v2 = new ConcreteVisitor2();

            // Structure accepting visitors
            o.Accept(v1);
            o.Accept(v2);
        }
        public static void Demo(string[] args)
        {
            // Setup structure
            ObjectStructure o = new ObjectStructure();
            o.Attach(new ConcreteElementA());
            o.Attach(new ConcreteElementB());

            // Create visitor objects
            ConcreteVisitor1 v1 = new ConcreteVisitor1();
            ConcreteVisitor2 v2 = new ConcreteVisitor2();

            // Structure accepting visitors
            o.Accept(v1);
            o.Accept(v2);
        }
Esempio n. 18
0
    static int Main()
    {
        ObjectStructure o = new ObjectStructure();

        o.Attach(new ConcreteElementA());
        o.Attach(new ConcreteElementB());

        ConcreteVisitor1 v1 = new ConcreteVisitor1();
        ConcreteVisitor2 v2 = new ConcreteVisitor2();

        o.Accept(v1);
        o.Accept(v2);

        return(0);
    }
Esempio n. 19
0
        static void Main(string[] args)
        {
            var o = new ObjectStructure();

            o.Add(new ConcreteElementA());
            o.Add(new ConcreteElementB());
            o.Add(new ConcreteElementB());
            o.Delete(new ConcreteElementB());
            var v1 = new ConcreteVisitor1();
            var v2 = new ConcreteVisitor2();

            o.Accept(v1);
            o.Accept(v2);
            Console.ReadKey();
        }
Esempio n. 20
0
        public static void VisitorStructural()
        {
            // Setup structure
            ObjectStructure o = new ObjectStructure();

            o.Attach(new ConcreteElementA());
            o.Attach(new ConcreteElementB());

            // Create visitor objects
            ConcreteVisitor1 v1 = new ConcreteVisitor1();
            ConcreteVisitor2 v2 = new ConcreteVisitor2();

            // Structure accepting visitors
            o.Accept(v1);
            o.Accept(v2);
        }
Esempio n. 21
0
        public void TestIterator()
        {
            decimal expected =
                this._shopcart[0].UnitPrice * this._shopcart[0].Amount * 0.8M +
                this._shopcart[2].UnitPrice * this._shopcart[2].Amount;
            decimal actual = 0;

            Aggregate aggregate = new ConcreteAggregate(ProductTypeEnum.Book);

            this._shopcart.ForEach(prod =>
            {
                aggregate.Add(prod);
            });

            #region 改寫Visitor單元測試

            IObjectStructure checkout = new ObjectStructure();

            //Attach the elements into ObjectStructure
            checkout.Elements = aggregate.GetAll();

            //Accept all the elements and execute the strategy from certain Visitor
            checkout.Accept(new VisitorDiscount4Count());

            actual = checkout.Elements.Sum(x => x.TotalPrice);
            Assert.Equal(expected, actual);
            #endregion
        }
Esempio n. 22
0
        public static void TestVisitors()
        {
            var o    = new ObjectStructure();
            var celA = new ConcreteElementA();
            var celB = new ConcreteElementB();

            Assert.AreSame(o.Attach(celA, true), celA);
            Assert.AreSame(o.Attach(celB, true), celB);

            var v1 = new ConcreteVisitor1();
            var v2 = new ConcreteVisitor2();

            var test1 = o.Accept(v1, true);

            StringAssert.AreEqualIgnoringCase(test1, "ConcreteElementA visited by ConcreteVisitor1\r\nConcreteElementB visited by ConcreteVisitor1\r\n");
            var test2 = o.Accept(v2, true);

            StringAssert.AreEqualIgnoringCase(test2, "ConcreteElementA visited by ConcreteVisitor2\r\nConcreteElementB visited by ConcreteVisitor2\r\n");
        }
Esempio n. 23
0
        static void VisitorExample()
        {
            var structure = new ObjectStructure();

            structure.Add(new ConcreteElement1());
            structure.Add(new ConcreteElement2());
            structure.Add(new ConcreteElement1());

            structure.Accept(new ConcreteVisitor());
        }
    static void Main()
    {
        // Setup structure
        ObjectStructure o = new ObjectStructure();

        o.Attach(new ConcreteElementA());
        o.Attach(new ConcreteElementB());

        // Create visitor objects
        ConcreteVisitor1 v1 = new ConcreteVisitor1();
        ConcreteVisitor2 v2 = new ConcreteVisitor2();

        // Structure accepting visitors
        o.Accept(v1);
        o.Accept(v2);

        // Wait for user
        Console.Read();
    }
Esempio n. 25
0
        //Відвідувач - Visitor
        public Run Visitor()
        {
            Console.WriteLine("\nVisitor:");

            // Setup structure
            ObjectStructure o = new ObjectStructure();

            o.Attach(new ConcreteElementA());
            o.Attach(new ConcreteElementB());

            // Create visitor objects
            ConcreteVisitor1 v1 = new ConcreteVisitor1();
            ConcreteVisitor2 v2 = new ConcreteVisitor2();

            // Structure accepting visitors
            o.Accept(v1);
            o.Accept(v2);

            return(this);
        }
Esempio n. 26
0
        public void Start()
        {
            var car   = new CarElement();
            var motor = new MotorCycleElement();

            ObjectStructure o = new ObjectStructure();

            o.Attach(car);
            o.Attach(motor);

            // Create visitor objects

            ServiceVisitor vService = new ServiceVisitor();
            RefuelVisitor  vRefuel  = new RefuelVisitor();

            // Structure accepting visitors

            o.Accept(vService);
            o.Accept(vRefuel);

            car.GoHome();
            motor.GoHome();
        }
Esempio n. 27
0
        static void Main(string[] args)
        {
            // base implementation
            var structure = new ObjectStructure();

            structure.Add(new ElementA());
            structure.Add(new ElementB());
            structure.Accept(new ConcreteVisitor1());
            structure.Accept(new ConcreteVisitor2());

            //---------------------------------
            doubleDespetcher.Visitor v = new doubleDespetcher.Visitor();
            Graphic g = new Dot();

            // Метод accept() – переопределен, но не перегружен. А значит, связан
            // динамически. Поэтому реализация `accept` будет выбрана во время выполнения
            // уже из того класса, объект которого его вызвал (класс Dot).
            g.accept(v);
            //---------------------

            Console.WriteLine("Bank sample: ");
            testReal();
            Console.ReadLine();
        }
Esempio n. 28
0
        static bool TestVisitorPattern()
        {
            Console.WriteLine("TESTING THE VISITOR DESIGN PATTERN: ");

            ObjectStructure o = new ObjectStructure();

            o.Attach(new Element1());
            o.Attach(new Element2());

            var v1 = new Visitor1();
            var v2 = new Visitor2();

            o.Accept(v1);
            //Output:
            //Element1 visited by Visitor1
            //Element2 visited by Visitor1

            o.Accept(v2);
            //Output:
            //Element1 visited by Visitor2 with override behaviour
            //Element2 visited by Visitor2 with override behaviour

            return(true);
        }
Esempio n. 29
0
        public void ElementsVisited()
        {
            // Clear the visit history for testing
            _element1.VisitedBy.Clear();
            _element2.VisitedBy.Clear();
            _visitor1.Visited.Clear();
            _visitor2.Visited.Clear();

            // Accept a visit from the visitors
            _objectStructure.Accept(_visitor1);
            _objectStructure.Accept(_visitor2);

            // Assert that the elements have been visited by each of the visitors using the object structure
            Assert.IsTrue(_element1.VisitedBy.Contains(_visitor1));
            Assert.IsTrue(_element1.VisitedBy.Contains(_visitor2));
            Assert.IsTrue(_element2.VisitedBy.Contains(_visitor1));
            Assert.IsTrue(_element2.VisitedBy.Contains(_visitor2));

            // Assert that the visitors have visited each of the elements using the object structure
            Assert.IsTrue(_visitor1.Visited.Contains(_element1));
            Assert.IsTrue(_visitor1.Visited.Contains(_element2));
            Assert.IsTrue(_visitor2.Visited.Contains(_element1));
            Assert.IsTrue(_visitor2.Visited.Contains(_element2));
        }
Esempio n. 30
0
    static void Main()
    {
        var o = new ObjectStructure();

        o.Add(new ConcreteElementA("A1"));
        o.Add(new ConcreteElementA("A2"));
        o.Add(new ConcreteElementB("B1"));
        o.Add(new ConcreteElementA("A3"));
        o.Add(new ConcreteElementB("B2"));

        var visitor1 = new ConcreteVisitor1();

        o.Accept(visitor1);

        Console.ReadKey();
    }
Esempio n. 31
0
        public void TestVisitorDiscount4TotalPrice()
        {
            decimal expected =
                this._shopcart[2].UnitPrice * this._shopcart[2].Amount * 0.9M +
                this._shopcart[3].UnitPrice * this._shopcart[3].Amount;
            decimal actual = 0;

            IObjectStructure checkout = new ObjectStructure();

            //Attach the elements into ObjectStructure
            this._shopcart.Where(item => item.ProductType.Equals(ProductTypeEnum.Living)).ToList().ForEach(item => {
                checkout.Attach(item);
            });

            //Accept all the elements and execute the strategy from certain Visitor
            checkout.Accept(new VisitorDiscount4TotalPrice());

            actual = checkout.Elements.Sum(x => x.TotalPrice);
            Assert.Equal(expected, actual);
        }
Esempio n. 32
0
        static void Main(string[] args)
        {
            #region Strategy

            //First Step
            Console.WriteLine("Initialize Strategy");

            long[] inputArray = new long[20];
            Random radom      = new Random();

            for (int strategy = 0; strategy < inputArray.Length; strategy++)
            {
                inputArray[strategy] = radom.Next(100);
            }

            foreach (long number in inputArray)
            {
                Console.WriteLine(number);
            }
            Console.ReadKey();

            //Second Step
            //Strategy 1
            var alg = new BubbleSort();
            alg.Sort(inputArray);
            Console.WriteLine("sort numbers");

            foreach (long number in inputArray)
            {
                Console.WriteLine(number);
            }

            Console.ReadKey();

            //Strategy 2
            var alg2 = new SelectionSort();
            alg2.Sort(inputArray);
            Console.WriteLine("sort numbers");
            foreach (long number in inputArray)
            {
                Console.WriteLine(number);
            }

            Console.ReadKey();

            //Apply Strategy Patterns
            Strategy.Context ctx = new Strategy.Context(new SelectionSort());
            ctx.ContextInterface(inputArray);
            Console.WriteLine("sort numbers");

            foreach (long number in inputArray)
            {
                Console.WriteLine(number);
            }

            Console.ReadKey();
            Console.WriteLine("Finalize Strategy" + Environment.NewLine);

            #endregion

            #region ChainOfResponsability

            Console.WriteLine("ChainOfResponsability Initialize");

            // First Step
            Validate validate = new Validate();
            Console.WriteLine(validate.ValidateUser("Test", "Test").ToString());

            ///Apply ChainOfResponsability pattern
            ChainOfResponsability.Form   valform   = new ChainOfResponsability.Form();
            ChainOfResponsability.Server valserver = new ChainOfResponsability.Server();
            BD valBD = new BD();

            valform.setSucessor(valserver);
            valserver.setSucessor(valBD);

            Console.WriteLine(valform.ValidateUser("Teste", "Teste").ToString());

            Console.WriteLine("ChainOfResponsability Finalize" + Environment.NewLine);

            #endregion

            #region Command

            Console.WriteLine("Command Initialize");

            //Configure Receiver
            Command.Server server = new Command.Server();

            //Create command and configure receiver.
            CommandAbstract cmd = new ServerCommand(server);

            //Configure invoker
            Command.Formulario form = new Command.Formulario();

            form.SetCommand(cmd);
            form.ClickValidate();
            Console.WriteLine("Command Finalize" + Environment.NewLine);
            Console.ReadLine();

            #endregion

            #region Iterator

            Console.WriteLine("Iterator Initialize");

            //Create concrete aggregate
            Team team = new Team();
            team[0] = "Luiz";
            team[0] = "Alex";
            team[0] = "Rodrigo";
            team[0] = "Renan";

            ConcreteIterator i = new ConcreteIterator(team);

            Console.WriteLine("Show team's members");

            Object item = i.First();

            while (item != null)
            {
                Console.WriteLine(item);
                item = i.Next();
            }

            Console.WriteLine("Iterator Finalize" + Environment.NewLine);
            Console.ReadLine();

            #endregion

            #region Mediator

            Console.WriteLine("Mediator Initialize");

            ConcreteMediator concreteMediator = new ConcreteMediator();
            Support          support          = new Support(concreteMediator);
            User             user             = new User(concreteMediator);

            concreteMediator.Suporte = support;
            concreteMediator.Usuario = user;

            support.Send("Hello user");
            user.Send("Hello support");

            Console.WriteLine("Mediator Finalize" + Environment.NewLine);
            Console.ReadLine();

            #endregion

            #region Memento

            Console.WriteLine("Memento Initialize");

            //Create originator
            Originator people = new Originator();
            people.State = "Bored";

            //Create caretaker
            Caretaker caretaker = new Caretaker();
            caretaker.Memento = people.CreateMemento();

            people.State = "Happy";
            Console.WriteLine("Actual State:" + people.State);

            people.setMemento(caretaker.Memento);
            Console.WriteLine("Restore State: " + people.State);

            Console.WriteLine("Memento Finalize" + Environment.NewLine);

            #endregion

            #region Observer

            Console.WriteLine("Observer Initialize");

            Balance balanco = new Balance();
            Sale    venda   = new Sale(balanco);

            balanco.Attach(venda);

            balanco.Iniciar();
            balanco.Notify();

            balanco.Finalizar();
            balanco.Notify();

            venda.Iniciar();

            //After remove observer
            balanco.Detach(venda);

            balanco.Iniciar();
            balanco.Notify();

            venda.Iniciar();

            Console.WriteLine("Observer Finalize" + Environment.NewLine);
            Console.ReadLine();

            #endregion

            #region State

            Console.WriteLine("State Initialize");

            Connection connection = new Connection(new ConnectionOpened());

            connection.Open();
            connection.Close();

            Console.WriteLine("State Finalize" + Environment.NewLine);
            Console.ReadLine();

            #endregion

            #region Template Method

            Console.WriteLine("Template Method Initialize");

            Correction proofCorrecion = new ProofCorrection();
            proofCorrecion.Process();

            Correction writingCorrection = new WritingCorrection();
            writingCorrection.Process();

            Console.WriteLine("Template Method Finalize" + Environment.NewLine);
            Console.ReadLine();

            #endregion

            #region Visitor

            Console.WriteLine("Visitor Initialize");

            //Config structure
            ObjectStructure objectStructure = new ObjectStructure();

            objectStructure.Attach(new ConcreteElementA());
            objectStructure.Attach(new ConcreteElementB());

            //Create Visitors
            ConcreteVisitor1 concreteVisitor1 = new ConcreteVisitor1();
            ConcreteVisitor2 concreteVisitor2 = new ConcreteVisitor2();

            objectStructure.Accept(concreteVisitor1);
            objectStructure.Accept(concreteVisitor2);

            Console.WriteLine("Visitor Finalize" + Environment.NewLine);
            Console.ReadLine();

            #endregion

            #region Interpreter

            Console.WriteLine("Interpreter Initialize");

            string roman = "MCMXXVIII";
            Interpreter.Context context = new Interpreter.Context(roman);

            List <Expression> tree = new List <Expression>();
            tree.Add(new ThousandExpression());
            tree.Add(new HundredExpression());
            tree.Add(new TenExpression());
            tree.Add(new OneExpression());

            foreach (Expression exp in tree)
            {
                exp.Interpret(context);
            }

            Console.WriteLine("{0} = {1}", roman, context.Output);

            Console.WriteLine("Interpreter Finalize" + Environment.NewLine);
            Console.ReadKey();

            #endregion
        }