示例#1
0
        public static void Main(string[] args)
        {
            NotaFiscalBuilder builder = new NotaFiscalBuilder();

            builder.AdicionaAcao(new Multiplicador(5));
            builder.AdicionaAcao(new Multiplicador(7));
            builder.AdicionaAcao(new Multiplicador(1.5));

            NotaFiscal notaFiscal = builder.ParaEmpresa("Stark")
                                    .ComCnpj("54698798756498")
                                    .ComItem(new ItemDaNota("item 1", 1000.0))
                                    .ComItem(new ItemDaNota("item 2", 2020.0))
                                    .ComItem(new ItemDaNota("item 3", 3440.0))
                                    .ComObservacoes("entregar notaFiscal pessoalmente")
                                    .NaDataAtual()
                                    .Constroi();

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            //ex 1 - strategy
            //Imposto iss = new ISS();
            //Imposto icms = new ICMS();
            //Imposto iccc = new ICCC();

            //Investimento conversador = new Conservador();
            //Investimento moderado = new Moderado();
            //Investimento arrojado = new Arrojado();

            //Orcamento orcamento = new Orcamento(500.0);

            //// Calculando o ISS
            //CalculadorImposto.RealizaCalculo(orcamento, iss);

            //// Calculando o ICMS
            //CalculadorImposto.RealizaCalculo(orcamento, icms);

            //// Calculando o ISSS
            //CalculadorImposto.RealizaCalculo(orcamento, iccc);

            //// Calculando o ISS
            //CalculadorInvestimento.RealizaCalculo(orcamento, conversador);

            //// Calculando o ICMS
            //CalculadorInvestimento.RealizaCalculo(orcamento, moderado);

            //// Calculando o ISSS
            //CalculadorInvestimento.RealizaCalculo(orcamento, arrojado);

            //ex 2 - Chain of Responsability
            //CalculadorDeDescontos calculador = new CalculadorDeDescontos();

            //Orcamento orcamento = new Orcamento(500);
            //orcamento.AdicionaItem(new Item("CANETA", 250));
            //orcamento.AdicionaItem(new Item("LAPIS", 250));
            //double desconto = calculador.Calcula(orcamento);
            //Console.WriteLine(desconto);

            // ex 5 STATE

            //Orcamento reforma = new Orcamento(500);
            //Console.WriteLine(reforma.Valor);

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


            // ex 6 - Builder & Fluent Interface
            NotaFiscalBuilder builder = new NotaFiscalBuilder();

            builder
            .ParaEmpresa("Caelum Ensino")
            .ComCnpj("223.456/789/0001-12")
            .ComItem(new ItemDaNota("item 1", 100.0))
            .ComItem(new ItemDaNota("item 2", 200.0))
            .NaDataAtual()
            .ComObservacoes("uma obs qualquer");
            // ex 7 - Observer
            builder.AdicionaAcao(new EnviadorDeEmail());
            builder.AdicionaAcao(new NotaFiscalDao());
            builder.AdicionaAcao(new EnviadorDeSms());

            NotaFiscal nf = builder.Constroi();

            Console.ReadKey();
        }