Beispiel #1
0
        static void Main(string[] args)
        {
            const string razaoSocial = "razaoSocial";
            const string cnpj        = "cnpj";
            const string observacoes = "Observacoes";
            //var dataDeEmissao = DateTime.Now;
            //const int valorBruto = 0;
            //const int impostos = 0;

            //var itens = new List<ItemDaNota> {new ItemDaNota("nome", 10)};

            var criador = new NotaFiscalBuilder()
                          .ParaEmpresa(razaoSocial)
                          .ComCnpj(cnpj)
                          .NaDataAtual()
                          .ComObservacoes(observacoes)
                          .ComItem(new ItemDaNota("nome 01", 10))
                          .ComItem(new ItemDaNota("nome 02", 15))
                          .AdicionaAcao(new EnviadorDeEmail())
                          .AdicionaAcao(new EnviadorDeSms())
                          .AdicionaAcao(new NotaFicalEntity());



            var nf = criador.Constroi();
        }
        static void Main(string[] args)
        {
            #region Exemplo Pattern Builder
            List <IAcaoAposGererNota> listaAcoes = new List <IAcaoAposGererNota>();
            listaAcoes.Add(new EnviadorDeEmail());
            listaAcoes.Add(new NotaFiscalDao());
            listaAcoes.Add(new EnviadorDeSms());

            NotaFiscalBuilder criador = new NotaFiscalBuilder(listaAcoes);
            //Mudado os métodos para formar um "Fluent Interface"/"Method Chaining".
            criador
            .ParaEmpresa("Caelum Ensino e Inovacao")
            .ComCnpj("23.456.789/0001-12")
            .ComItem(new ItemDaNota("Item 1", 100))
            .ComItem(new ItemDaNota("Item 2", 200))
            .NaDataAtual()
            .ComObservacoes("Obs!");

            //criador.AdicionarAcao(new EnviadorDeEmail());
            //criador.AdicionarAcao(new NotaFiscalDao());
            //criador.AdicionarAcao(new EnviadorDeSms());
            criador.AdicionarAcao(new Impressora());
            criador.AdicionarAcao(new Multiplicador(2.5));

            NotaFiscal notaFiscal = criador.Constroi();

            Console.WriteLine(notaFiscal.ValorBruto);
            Console.WriteLine(notaFiscal.Impostos);
            Console.ReadKey();
            Console.Clear();
            #endregion

            #region Exemplo Tutorials Point
            Subject subject = new Subject();

            new HexaObserver(subject);
            new OctalObserver(subject);
            new BinaryObserver(subject);

            Console.WriteLine("First state change: 15");
            subject.setState(15);
            Console.WriteLine();
            Console.WriteLine("Second state change: 10");
            subject.setState(10);
            #endregion

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            const string razaoSocial = "razaoSocial";
            const string cnpj = "cnpj";
            const string observacoes = "Observacoes";
            //var dataDeEmissao = DateTime.Now;
            //const int valorBruto = 0;
            //const int impostos = 0;

            //var itens = new List<ItemDaNota> {new ItemDaNota("nome", 10)};

            var criador = new NotaFiscalBuilder()
                .ParaEmpresa(razaoSocial)
                .ComCnpj(cnpj)
                .NaDataAtual()
                .ComObservacoes(observacoes)
                .ComItem(new ItemDaNota("nome 01", 10))
                .ComItem(new ItemDaNota("nome 02", 15))
                .AdicionaAcao(new EnviadorDeEmail())
                .AdicionaAcao(new EnviadorDeSms())
                .AdicionaAcao(new NotaFicalEntity());

            var nf = criador.Constroi();
        }
        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();
        }