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

Desconto Extra aplicado uma única vez

Eu entendi que ele poderia trocar de EmAprovavao para Aprovado, no total chamaria 2 descontos. Se fosse chamado AplicaDesconto novamente ele lançaria uma exception, entao apliquei a condicional do metodo aplicaDesconto, funcionou, mas quero saber se a forma de trabalhar com isso esta correta e se também poderia ser assim?

trecho do codigo

private static int limiteDeDesconto=0;

... outros metodos

public void aplicaDescontoExtra() {
    limiteDeDesconto++;
    if(limiteDeDesconto > 2)
        throw new RuntimeException("Desconto ja ofi aplicado neste orcamento");
    else
        estadoAtual.aplicaDescontoExtra(this);
}
1 resposta
solução!

O problema de vc aplicar a condicional no aplicaDesconto é que que se vc tiver outras transições, vc vai ter que lembrar de incrementar aí.. por isso que é mais jogo deixar essa decisão dentro do próprio estado.