Ejemplo n.º 1
0
        /*
         * - INTENÇÃO: encapsular uma solicitação como um objeto, desta forma permitindo parametrizar clientes com diferentes
         *          solicitações, enfileirar ou fazer o registro (log) de solicitações e suportar operações que podem ser
         *          desfeitas.
         * - Encapsular comandos como um objeto.
         */
        static void Main(string[] args)
        {
            Calculadora calculadora = new Calculadora();

            // A classe invoker irá armazenar o histórico dos calculos;
            Invoker invoker = new Invoker();

            // Executar a operação de soma
            invoker.compute(new Soma(calculadora, 10));
            invoker.compute(new Soma(calculadora, 20));
            invoker.compute(new Soma(calculadora, 10));

            // Desfazer as duas útltimas operações
            invoker.undo(2);
        }