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);
    }
} 
            