예제 #1
0
        static void Main(string[] args)
        {
            /* Design Pattern Memento
             * Utilizado para salvar o Estado de um Objeto
             * Util para recuperar o Estado de um Objeto em um certo momento por exemplo.
             */

            Historico historico = new Historico();

            Contrato contrato = new Contrato(DateTime.Now, "Joao", TipoContrato.Novo);

            historico.Adicionar(contrato.SalvarEstado()); // TIPO CONTRATO = NOVO

            contrato.Avancar();                           // TIPO CONTRATO = ANDAMENTO
            historico.Adicionar(contrato.SalvarEstado());

            contrato.Avancar(); // TIPO CONTRATO = ACERTADO
            historico.Adicionar(contrato.SalvarEstado());

            contrato.Restaurar(historico.Obter(1)); // TIPO CONTRATO = ANDAMENTO * RESTAURANDO ESTADO
            historico.Adicionar(contrato.SalvarEstado());

            contrato.Avancar(); // TIPO CONTRATO = ACERTADO
            historico.Adicionar(contrato.SalvarEstado());

            contrato.Avancar(); // TIPO CONTRATO = CONCLUIDO
            historico.Adicionar(contrato.SalvarEstado());

            Console.WriteLine("Historico de Estados");

            Estado estado;

            for (int i = 0; i < historico.QtdEstados; i++)
            {
                estado = historico.Obter(i);

                Console.WriteLine();
                Console.WriteLine($"Data de Alteracao: {estado.DtAlteracao.ToString("dd/MM/yyyy HH:mm:ss:fff")}");
                Console.WriteLine($"Data do Contrato: {estado.Contrato.Dt.ToString("dd/MM/yyyy HH:mm:ss:fff")}");
                Console.WriteLine($"Cliente: {estado.Contrato.Cliente}");
                Console.WriteLine($"Tipo: {estado.Contrato.Tipo}");
            }

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

            Historico historico = new Historico();

            Contrato contrato = new Contrato(DateTime.Now, "Adriano", TipoContrato.Novo);

            historico.Adiciona(contrato.SalvarEstado());

            Thread.Sleep(500);

            contrato.Avanca();
            historico.Adiciona(contrato.SalvarEstado());

            Thread.Sleep(500);

            contrato.Avanca();
            historico.Adiciona(contrato.SalvarEstado());



            Estado e0 = historico.Obter(0);

            Console.WriteLine($"Estado {0} em {e0.DataTransicao} com tipo {e0.Contrato.Tipo}");


            Estado e1 = historico.Obter(1);

            Console.WriteLine($"Estado {1} em {e1.DataTransicao} com tipo {e1.Contrato.Tipo}");


            Estado e2 = historico.Obter(2);

            Console.WriteLine($"Estado {2} em {e1.DataTransicao} com tipo {e2.Contrato.Tipo}");
        }