/// <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(); }
public void RealizaCalculo(Orcamento orcamento, IImposto imposto) { double result = imposto.Calcula(orcamento); Console.WriteLine(result); }
protected override bool DeveUsarMaximaTaxacao(Orcamento orcamento) { return(orcamento.Valor > 500 && TemItemMaiorQue100Reais(orcamento)); }
protected override double MinimaTaxacao(Orcamento orcamento) { return(orcamento.Valor * 0.06); }
protected override double MaximaTaxacao(Orcamento orcamento) { return(orcamento.Valor * 0.10); }
protected override bool deveUsarMaximaTaxacao(Orcamento orcamento) { return(orcamento.getValor() > 500 && temItemMaiorQue100ReaisNo(orcamento)); }
protected override double minimaTaxacao(Orcamento orcamento) { return(orcamento.getValor() * 0.06); }