Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Um ou vários templates?

Caso eu tivesse várias condicionais de imposto, por exemplo: taxacao1 em determinada condição, taxacao2 em outra, taxacao3 e assim por diante. Como faria para aplicar o TemplateMethod? Devo criar um Template para as classes que tenha uma condição, um para as que tem duas, uma para as que tem três e assim por diante ou generalizar e criar um template para que todas usem?

Se possível gostaria de um exemplo em código para facilitar minha abstração.

Grato desde já! =D

1 resposta
solução!

Luiz, boa tarde, tudo bem?

Se a estrutura (template) do algoritmo muda, então é melhor criar classes diferentes para cada estrutura (template). Isso garante maior flexibilidade em futuras evoluções de sua aplicação.

No exemplo abaixo o imposto é calculado para 3 condições diferentes e não mais para condição máxima e mínima. Ele foge do template original.

Se outros impostos tiverem a mesma estrutura (taxa máxima, taxa intermediária e taxa mínima) talvez valha a pena criar uma classe abstrata que represente a estrutura desse algoritmo.

public double Calcula(Orcamento orcamento)
{
    if(orcamento.Valor > 500)
    {
        return orcamento.Valor * 0.1;
    } else if (orcamento.Valor > 250 && orcamento.Valor < 500)
    {
        return orcamento.Valor * 0.2;
    }
    return orcamento.Valor * 0.05;
}

Espero que tenha ajudado.

Abraços!