Olá, ao ver os vídeos percebi que ocorre uma certa "ordenação" dos métodos calcular, onde cada vez é chamado um novo Desconto.
Poderia ser criada um List para guardar todos os descontos e ir verificando um a um com o "hasNext()"?
Olá, ao ver os vídeos percebi que ocorre uma certa "ordenação" dos métodos calcular, onde cada vez é chamado um novo Desconto.
Poderia ser criada um List para guardar todos os descontos e ir verificando um a um com o "hasNext()"?
Olá Erik!
Sim, você pode usar um List no padrão Chain of Responsibility para guardar todos os descontos e ir verificando um a um com o "hasNext()". Na verdade, essa é uma abordagem comum para implementar esse padrão.
Por exemplo, você pode criar uma lista de objetos que implementam a interface Desconto e, em seguida, percorrer a lista verificando se o desconto pode ser aplicado ou não. Se o desconto puder ser aplicado, você pode aplicá-lo e sair do loop. Caso contrário, continue verificando os próximos descontos.
Aqui está um exemplo de como você pode implementar isso:
public class CalculadoraDeDescontos {
private List<Desconto> descontos;
public CalculadoraDeDescontos(List<Desconto> descontos) {
this.descontos = descontos;
}
public double calcular(Orcamento orcamento) {
for (Desconto desconto : descontos) {
if (desconto.podeAplicar(orcamento)) {
return desconto.calcular(orcamento);
}
}
return 0;
}
}
Espero ter ajudado e bons estudos!