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

Acesso direto ao Histórico (Design Pattern Memento)

No código abaixo, porque temos que adicionar os estados manualmente toda vez que o contrato avança? Não há maneiras de trabalhar apenas com a classe Contrato? Não faz sentido ter que manipular as duas instâncias paralelamente, pois se esquecer de adicionar o estado, o histórico ficaria inconsistente.

if name == 'main':

historico = Historico()

contrato = Contrato(nome='Flávio Almeida')

contrato.avanca()
historico.adiciona_estado(contrato.salva_estado())

contrato.avanca()
historico.adiciona_estado(contrato.salva_estado())

contrato.avanca()
historico.adiciona_estado(contrato.salva_estado())
1 resposta
solução!

Oi Daniel, tudo bom?

Sua constatação faz bastante sentido. Uma abordagem seria criar o método avanca() na classe Historico, recebendo um Contrato. Assim você poderia chamar historico.avanca(contrato) e já adicionar o estado ao histórico antes de avancar =)

A implementação seria algo como:

class Historico(object):
    def avanca(self,contrato):
            contrato.avanca();
        self. adiciona_estado(contrato.salva_estado())

Assim, suas chamadas ficariam:

historico = Historico()

contrato = Contrato(nome='Flávio Almeida')

historico.avanca(contrato)

historico.avanca(contrato)

historico.avanca(contrato)

Porém, aqui estamos indo um pouco além do que o pattern se propõe a resolver =)

Abraço!