Outra maneira de implementar o cálculo | Design Patterns Java I: Boas práticas de programação | Alura - Cursos online de tecnologia
Outra maneira de implementar o cálculo
Publicado 5 anos atrás , em 03/02/2017
Boas práticas em Java
Design Patterns Java I
Referente ao curso Design Patterns Java I: Boas práticas de programação, no capítulo A grande variedade de impostos e o padrão Strategy e atividade A grande variedade de impostos e o padrão Strategy
por Marcelo Saraiva
| 73.9k xp | 81 posts
Analista Judiciário - Especialidade TI
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 {
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);
por Fernando Furtado
| 812.4k xp | 823 posts
Instrutor Instrutor
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.
por Matheus Pereira de Faria
| 38.6k xp | 3 posts
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."
por Maison Galvão
| 1025.6k xp | 1125 posts
Moderador Desenvolvedor de Sistemas
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.