static void Main(string[] args) { Console.WriteLine("Template Method"); Orcamento orcamento = new Orcamento(); orcamento.AdicionaItem(new Item("NOTEBOOK", 1500)); orcamento.AdicionaItem(new Item("MOUSE", 100)); orcamento.AdicionaItem(new Item("TECLADO", 100)); orcamento.AdicionaItem(new Item("MONITOR", 100)); orcamento.AdicionaItem(new Item("IMPRESSORA", 100)); orcamento.AdicionaItem(new Item("BATERIA", 100)); ICMS icms = new ICMS(); Console.WriteLine($"ICMS: {icms.Calcular(orcamento)}"); ISS iss = new ISS(); Console.WriteLine($"ISS: {iss.Calcular(orcamento)}"); Console.ReadKey(); }
/// <summary> /// Template Method - Usamos esse padrao quando temos regras de negocio ( algoritimos ) /// iguais e classes diferentes. A ideia é criar um template (uma classe ) que contenha a logica do algotitimo /// e as classes que precisam , utilizam este template ao inves de implementa-los diretamente. /// Neste caso, a forma de calculo de imposto IIS e ICMS é a mesma, portando um template foi criado e os /// dois impostos utilizam. /// </summary> /// <param name="args"></param> static void Main(string[] args) { Orcamento o = new Orcamento(); o.Valor = 2500; o.itens.Add(new Itens()); o.itens.Add(new Itens()); o.itens.Add(new Itens()); o.itens.Add(new Itens()); o.itens.Add(new Itens()); o.itens.Add(new Itens()); TemplateImposto icms = new ICMS(); TemplateImposto iss = new ISS(); double valorICMS = icms.CalcularImposto(o); double valorISS = iss.CalcularImposto(o); Console.WriteLine(valorICMS); Console.WriteLine(valorISS); Console.Read(); }