Nos métodos Aprova, Finaliza e Reprova das classes que implementam a interface IEstadoOrcamento muitas vezes está sendo alterado o objeto Orcamento por referência. Ex: orcamento.EstadoAtual = new Finalizado(). Isso não se torna uma má prática de programação? não serial ideal retornar o objeto que implementa a interface IEstadoOrcamento e e fazer com que a classe Orcamento se encarregue de atualizar o objeto?