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

Usar Classe Abstrata no lugar de Interface

Na aula sobre Chain of Responsibility é usado uma interface para criar uma abstração das classes de desconto, porém, apesar de a interface funcionar bem, ainda existe um trecho do código que está sendo repetido em todas as classes. Gostaria de saber se o uso de uma Classe Abstrata seria uma boa prática, já que poderíamos escrever esse código que está repetindo apenas uma vez, isso poderia gerar problemas futuros?

Classe abstrata ficaria assim:

public abstract class Desconto  {

    protected Desconto proximo;

    public void setProximoDesconto(Desconto proximo) {
        this.proximo = proximo;
    }

    public abstract String responde(Formato format, Conta conta);

}

Assim todas as classes que herdarem essa, não precisaram reescrever o código de "setProximoDesconto" e nem o atributo "proximo", mas mesmo assim seria obrigatório implementar o método "calcula" pois ele seria um método abstrato, dessa forma:

public class DescontoMaisQuinhentosReais extends Desconto {

    public double calcula(Orcamento orcamento) {

        if (orcamento.getValor() > 500.0) {
            return orcamento.getValor() * 0.07;
        }
        return super.proximo.calcula(orcamento);

    }

}
1 resposta
solução!

Oi Marcus, tudo bem ?

Vai depender bastante do contexto que você está no momento, mas seria possível sim :D