Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Outra alternativa utilizando um construtor sem argumento.

Boa tarde. Gostaria de saber se essa abordagem faz sentido.

Nas subclasses de Desconto ao invés de utilizar um construtor, que recebe o próximo desconto como argumento, eu pensei em não receber nada e na chamada do super, no construtor das subclasses, passar o próximo desconto adequado. Algo como..

public class DescontoNoOrcamentoComMaisDeCincoItens extends DescontoDoOrcamento{

    public DescontoNoOrcamentoComMaisDeCincoItens() {
        super(new DescontoNoOrcamentoParaValoresAcimaDeQuinhetos(new DescontoZero()));
    }

    // classe da calculadora
    public class CalculadoraDeDescontoDeOrcamento {

    public BigDecimal calcular(Orcamento orcamento) {

        DescontoNoOrcamentoParaValoresAcimaDeQuinhetos desconto = new DescontoNoOrcamentoParaValoresAcimaDeQuinhetos();

        return desconto.calcular(orcamento);
    }

Acho que também é valido deixar os dois construtores, um para deixar o cliente informar os próximos descontos, e o segundo, para que o próprio desconto informe o próximo desconto.

2 respostas
solução!

Oi Rodrigo,

Sim, tambem é valido essa abordagem, pois assim fica "encapsulado" na propria classe quais os proximos descontos.

A desvantagem que vejo seria perder a flexibilidade de ao instanciar a classe poder trocar o proximo desconto.

Concordo.