3
respostas

Outra maneira de implementar o cálculo

Mantendo as classes Icms, Iss e Orcamento e a interface Imposto exatamente como descrito no exercício, eu usei a classe de teste de uma maneira diferente. Será que está certo?

public class TestaCalculoImposto {

    public static void main(String[] args) {

        Orcamento orcamento = new Orcamento(200);
        double icms = new Icms().calculaImposto(orcamento);
        System.out.println("O ICMS do orçamento R$" + orcamento.getValor() + " vale R$" + icms);

        double iss = new Iss().calculaImposto(orcamento);
        System.out.println("O ISS do orçamento R$" + orcamento.getValor() + " vale R$" + iss);
    }

}
3 respostas

Fala aí Marcelo, blz?

Seu teste está correto sim, se você manteve as classes Icms, Iss e Orcamento e a interface Imposto com a mesma implementação do vídeo. O como usar não importa muito, pois você tem estratégias de cálculos diferentes com a interface Imposto. Além de que podem surgir novos impostos e seu projeto está apto para evoluir.

Espero ter ajudado, e bons estudos.

Fernando, achei sua resposta um pouco estranha, poderia me explicar? No caso do Marcelo, ele jogou fora, ou não está fazendo uso da interface Imposto, também não faz uso da classe Calculador de impostos (Para esse exemplo realmente não parece ser necessário). Ele apenas isolou as classes e deu um método qualquer que calcula para cada uma. Funciona, mas isso não foge um pouco do conceito do strategy?

"Strategy: É a interface comum a todos os algoritmos suportados. Através desta interface, o Context pode chamar o algoritmo criado pela ConcreteStrategy."

Está correto, ele continuar fazendo uso da interface imposto essa é só a classe de teste, A única diferença é que ele não utilizou a classe CalculadorDeImposto com a qual poderia calcular qualquer tipo de imposto, e que torna mais fácil entender o padrão, não devemos nos prender a implementação poderia ser feita de n formas diferentes, o importante é que as famílias de algoritmos(impostos) estão encapsuladas e podem variar independente do cliente.

Espero ter ajudado e bons estudos.