Esempio n. 1
0
        /*
         * - INTENÇÃO: representar uma operação a ser executada nos elementos de uma estrutura de objetos. Visitor permite
         *          definir uma nova operação sem mudar as classes dos elementos entre os quais opera.
         * - Define uma nova operação a uma classe sem alterá-la.
         */
        static void Main(string[] args)
        {
            //Object Structure
            Loja loja = new Loja();

            //Visitor
            PrecoEquipamentoVisitor visitor = new PrecoEquipamentoVisitor();

            //Element
            loja.addEquipamento(new Geladeira("Geladeira Consul", 3500));
            loja.addEquipamento(new Geladeira("Geladeira Brastemp", 5000));
            loja.addEquipamento(new Tv("Tv Lg Smart 55", 3000));
            loja.addEquipamento(new Fogao("Fogão 6 bocas branco Brastemp", 3500));

            //Visita todos os elementos
            loja.getEquipamentoList().ForEach(e =>
            {
                e.accept(visitor);
            });
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            //ObjectStructure
            Loja loja = new Loja();

            //Visitor
            PrecoEquipamentoVisitor visitor = new PrecoEquipamentoVisitor();

            //Element
            loja.addEquipamento(new Geladeira("Geladeira ABC", 1000.0));
            loja.addEquipamento(new Geladeira("Geladeira Duplex XYZ", 2500.0));
            loja.addEquipamento(new TV("TV LED 58 pol. ZZZ", 4000.0));
            loja.addEquipamento(new Fogao("Fog�o 6 bocas branco ABC", 1500.0));

            //Visita todos os elementos
            foreach (Equipamento e in loja.getEquipamentoList())
            {
                e.Accept(visitor);
            }

            Console.ReadKey();
        }