Esempio n. 1
0
        /// <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();
        }
Esempio n. 2
0
        public void RealizaCalculo(Orcamento orcamento, IImposto imposto)
        {
            double result = imposto.Calcula(orcamento);

            Console.WriteLine(result);
        }
Esempio n. 3
0
 protected override bool DeveUsarMaximaTaxacao(Orcamento orcamento)
 {
     return(orcamento.Valor > 500 && TemItemMaiorQue100Reais(orcamento));
 }
Esempio n. 4
0
 protected override double MinimaTaxacao(Orcamento orcamento)
 {
     return(orcamento.Valor * 0.06);
 }
Esempio n. 5
0
 protected override double MaximaTaxacao(Orcamento orcamento)
 {
     return(orcamento.Valor * 0.10);
 }
Esempio n. 6
0
 protected override bool deveUsarMaximaTaxacao(Orcamento orcamento)
 {
     return(orcamento.getValor() > 500 && temItemMaiorQue100ReaisNo(orcamento));
 }
Esempio n. 7
0
 protected override double minimaTaxacao(Orcamento orcamento)
 {
     return(orcamento.getValor() * 0.06);
 }