Example #1
0
 public void Executa(NotaFiscal nf)
 {
     Console.WriteLine("envia email");
 }
        static void Main(string[] args)
        {
            #region Estrategy
            // ####### TIPOS DE IMPOSTOS
            //Orcamento orcamento = new Orcamento(500.0);
            //CalculadorDeImposto calculadorDeImposto = new CalculadorDeImposto();
            //double iss = calculadorDeImposto.RealizaCalculo(orcamento, new ISS());
            //double icms = calculadorDeImposto.RealizaCalculo(orcamento, new ICMS());
            //Console.WriteLine(iss);
            //Console.WriteLine(icms);
            //Console.ReadKey();

            // ###### TIPOS DE INVESTIDORES
            //Conta conta = new Conta(1000);
            //RealizadorDeInvestimentos realizador = new RealizadorDeInvestimentos();
            //double resultadoConservador = realizador.RealizaInvestimento(conta, new Conservador());
            //conta.Deposita(resultadoConservador);
            //Console.WriteLine($"conservador: {conta.Saldo}");

            //conta = new Conta(1000);
            //Conta conta1 = new Conta(1000);

            //Moderado moderado = new Moderado();
            //double resultadoModerado = realizador.RealizaInvestimento(conta, moderado);
            //double resultadoModerado1 = realizador.RealizaInvestimento(conta1, moderado);

            //conta.Deposita(resultadoModerado);
            //conta1.Deposita(resultadoModerado1);

            //Console.WriteLine($"conta: {conta.Saldo}");
            //Console.WriteLine($"conta 1: {conta1.Saldo}");

            //conta = new Conta(1000);
            //double resultadoArojado = realizador.RealizaInvestimento(conta, new Arojado());
            //conta.Deposita(resultadoArojado);
            //Console.WriteLine($"arojado: {conta.Saldo}");
            //Console.ReadKey();
            #endregion

            #region Chain of Responsibility
            //CalculadorDeDescontos calculador = new CalculadorDeDescontos();

            //Orcamento orcamento = new Orcamento(1000);
            //orcamento.AdicionaItem(new Item("Caneta", 500));


            //double desconto = calculador.Calcula(orcamento);
            //Console.WriteLine(desconto);

            //Console.ReadKey();
            #endregion

            #region Templete Method
            //Orcamento orcamento = new Orcamento(501.0);
            //orcamento.AdicionaItem(new Item("Caneta", 500));
            //orcamento.AdicionaItem(new Item("Lapis", 500));
            //CalculadorDeImposto calculadorDeImposto = new CalculadorDeImposto();
            //double icpp = calculadorDeImposto.RealizaCalculo(orcamento, new ICPP());
            //Console.WriteLine(icpp);
            //double ikcv = calculadorDeImposto.RealizaCalculo(orcamento, new IKCV());
            //Console.WriteLine(ikcv);
            #endregion

            #region Decorator
            //Imposto iss = new ISS(new ICMS(new IKCV(new ICCC())));
            //Imposto impostoMuitoAlto = new ImpostoMuitoAlto(new ICMS());
            //Orcamento orcamento = new Orcamento(500);
            //double valor = impostoMuitoAlto.Calcular(orcamento);

            //Console.WriteLine(valor);
            #endregion

            #region State
            //Orcamento reforma = new Orcamento(500);

            //reforma.AplicaDescontoExtra();
            //reforma.AplicaDescontoExtra();
            //Console.WriteLine(reforma.Valor);

            //reforma.Aprova();

            //reforma.AplicaDescontoExtra();
            //Console.WriteLine(reforma.Valor);

            //reforma.Finaliza();
            #endregion

            #region State
            //Conta conta = new Conta();

            //conta.Saca(1000);

            //Console.WriteLine(conta.Saldo);
            #endregion

            #region Criacao de objeto com Builder e Executandos varias ações com Observer - Builder e Observer
            NotaFiscalBuilder nfBuilder = new NotaFiscalBuilder()
                                          .ParaEmpresa("Caelum")
                                          .ComCnpj("123.456.789/0001-10")
                                          .ComItem(new ItemDaNotaBuilder()
                                                   .ComNome("Item 1")
                                                   .ComValor(100.0)
                                                   .Builder())
                                          .ComItem(new ItemDaNota("item 2", 200.0))
                                          .ComItem(new ItemDaNota("item 3", 300.0))
                                          .ComObservacoes("entregar nf pessoalmente");

            nfBuilder.AdicionaAcao(new EnviadorDeEmail());
            nfBuilder.AdicionaAcao(new EnviadorDeSms());
            nfBuilder.AdicionaAcao(new NotaFiscalDao());

            NotaFiscal nf = nfBuilder.Builder();
            #endregion
        }