Na solução do exercício para impedir que o desconto fosse implementado mais de uma vez seria incorreto seguir os mesmos precipícios do pathern? Em minha solução implementei o estado de descontoAplicado conforme os demais estados:
public interface EstadoDeUmOrcamento {
void aplicaDescontoExtra(Orcamento orcamento);
void aprova(Orcamento orcamento);
void reprova(Orcamento orcamento);
void finaliza(Orcamento orcamento);
void descontoAplicado(Orcamento orcamento);
}
quando testei funcionou, essa seria uma solução exagerada?