/// <summary> /// TEMPLATE: Estruturas similares mas algoritmos diferentes /// </summary> private static void TemplateImpostos() { Imposto ikcv = new IKCV(); Imposto icpp = new ICPP(); Orcamento orcamento = new Orcamento(500.0); CalculadorDeImpostos calculador = new CalculadorDeImpostos(); Console.WriteLine($"IKCV......: {calculador.RealizaCalculo(orcamento, ikcv)}"); Console.WriteLine($"ICPP.....: {calculador.RealizaCalculo(orcamento, icpp)}"); Console.ReadKey(); }
/// <summary> /// STRATEGY: Aplicar em regra de negócio com interfaces similares para eliminar a necessidade de If's /// </summary> private static void Strategy() { Imposto iss = new ISS(); Imposto icms = new ICMS(); Imposto iccc = new ICCC(); Orcamento orcamento = new Orcamento(500.0); CalculadorDeImpostos calculador = new CalculadorDeImpostos(); Console.WriteLine($"ISS......: {calculador.RealizaCalculo(orcamento, iss)}"); Console.WriteLine($"ICMS.....: {calculador.RealizaCalculo(orcamento, icms)}"); Console.WriteLine($"ICCC.....: {calculador.RealizaCalculo(orcamento, iccc)}"); Console.ReadKey(); }