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

Decorador - vários impostos de uma vez

Pensei na possibilidade de ter vários impostos de uma vez. Então alterei o código do método calcular para ficar da seguinte forma.

public BigDecimal calcular(Orcamento orcamento) {
        // DESIGNER_PATTERN decorator - fiz uma alteração em relação ao código do curso para que seja possível add vários impostos
        BigDecimal valorTotalImpostos = realizarCalculo(orcamento);
        Imposto proximo = outro;
        while(proximo != null){
            valorTotalImpostos = valorTotalImpostos.add(proximo.realizarCalculo(orcamento));
            proximo = proximo.outro;
        }
        return valorTotalImpostos;
    }

Assim é possível executar algo como

calculadoraDeImpostos.calcular(orcamento, (new ISS(new ICMS(new PIS()))))

Isso está descaracterizando o padrão decorator?

1 resposta
solução!

Oi Bruno,

Também é válido desse jeito, pois você continua podendo "decorar" o cálculo do imposto, passando os tipos de imposto de maneira bem flexível também.

Bons estudos!