1
resposta

Por que é criada uma "cópia" do contrato no exercício do memento?

Por que no método salvaEstado() é criada uma cópia de Contrato?

class Contrato{
    //...
    public function salvaEstado(){
        return new Estado(new Contrato($this->nome,$this->data,$this->tipo));
    }
}

Se ao retornar o Estado utilizamos a própria instancia do Contrato acarretaria algum problema a aplicação?

class Contrato{
    //...
    public function salvaEstado(){
        return new Estado($this);
    }
}

Para ser mais preciso, com essa implementação existe o risco de caso se altere algo no contrato todos os contratos no histórico(referente ao mesmo objeto) sofram a mesma modificação?

1 resposta

Exato, a ideia de criar a nova instância é justamente registrar aquele instante do objeto e garantindo que ninguém mais vai modificar o estado dele.. se vc retornar a referência para o mesmo, qualquer alteração subsequente afetaria o "historico".