Esempio n. 1
0
        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();
        }
Esempio n. 2
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();
        }