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(); }
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(); }