Olá a todos!
Para testar o Strategy, criei uma classe main e executei vários testes, cada um utilizando um parâmetro diferente.
Porém, percebi que o código é exatamente o mesmo para cada parâmetro.
Minha intenção agora é, didaticamente, refatorar a classe para criar um único método e não precisar repetir código.
Porém, na prática, vi que não é tão fácil quanto parece.
Alguém pode me ajudar?
public class TesteCalculoImposto {
public static void main(String[] args) {
BigDecimal valor = new BigDecimal("1000");
Orcamento orcamento = new Orcamento(valor);
// Enum 1
CalculadoraDeImpostosEnum1 calculadora = new CalculadoraDeImpostosEnum1();
BigDecimal impostoCalculado = calculadora.calcularImposto(orcamento, TipoImpostoEnum1.ICMS);
System.out.println(impostoCalculado);
// Enum 2
CalculadoraDeImpostosEnum2 calculadora2 = new CalculadoraDeImpostosEnum2();
BigDecimal impostoCalculado2 = calculadora2.calcularImposto(orcamento, TipoImpostoEnum2.ICMS);
System.out.println(impostoCalculado2);
// Enum 3
CalculadoraDeImpostosEnum3 calculadora3 = new CalculadoraDeImpostosEnum3();
BigDecimal impostoCalculado3 = calculadora3.calcularImposto(orcamento, TipoImpostoEnum3.ICMS);
System.out.println(impostoCalculado3);
// Interface
CalculadoraDeImpostosInterface calculadora4 = new CalculadoraDeImpostosInterface();
BigDecimal impostoCalculado4 = calculadora4.calcularImposto(orcamento, new ICMS());
System.out.println(impostoCalculado4);
// Interface 2
CalculadoraDeImpostosInterface2 calculadora5 = new CalculadoraDeImpostosInterface2();
BigDecimal impostoCalculado5 = calculadora5.calcularImposto(orcamento, new ICMS2());
System.out.println(impostoCalculado5);
}
}