Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Poderia usar um List no Chain of Responsability?

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()"?

1 resposta
solução!

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!