Eu tenho lido sobre o padrão de lembranças de várias fontes da Internet. Informações diferentes de fontes diferentes me deixaram confuso a respeito de por que esse padrão é realmente necessário.
A implementação dofactory diz que a principal intenção desse padrão é restaurar o estado do sistema.
O Wiki diz que a intenção principal é poder restaurar as alterações no sistema. Isso causa um impacto diferente - dizendo que é possível que um sistema tenha implementação de memento sem a necessidade de restauração. E essa capacidade de restauração é uma característica disso.
OODesign diz que
Às vezes, é necessário capturar o estado interno de um objeto em algum momento e ter a capacidade de restaurar o objeto para esse estado mais tarde. Esse caso é útil em caso de erro ou falha.
Então, minha pergunta é por que exatamente usamos este? É para salvar estados anteriores - ou para promover o encapsulamento entre o zelador e o Memento? Por que esse tipo de encapsulamento é tão importante?
Edit: Para quem visita, confira esta Implementação!
Edit : Estou trabalhando na implementação de uma solução de lembrança para o meu problema. Vou postar outra pergunta sobre isso e vincular essa pergunta a esta. Obrigado a todos por responder com sugestões valiosas!
Edit 3 : Aqui está o link para minha implementação de amostra
fonte
Por si só, o Padrão de Memento é usado apenas para capturar e salvar estados. O encapsulamento existe apenas para proteger os estados do resto do sistema - uma vez que um estado é capturado, ele precisa ser controlado com cuidado. Por exemplo, não faz sentido poder alterar um estado anterior depois que ele é salvo (isso mudaria o histórico) e pode não fazer sentido simplesmente retornar ao estado anterior de um objeto sem afetar outros (para impedir o sistema entre em um estado totalmente inválido).
O uso mais comum de um Memento que eu já vi é dar suporte à funcionalidade de desfazer. Também está relacionado ao armazenamento da funcionalidade de refazer retornando no tempo.
fonte
Todas essas definições direcionam você na mesma direção; todos estão dizendo que o ponto é poder restaurar algo ao seu estado anterior. Que algo pode ser o sistema inteiro, ou apenas um único objeto.
Esse padrão é útil se um registro mudar de estado ao longo do tempo, mas você tem o requisito de negócios para poder restaurá-lo para qualquer estado anterior a qualquer momento. Ou, alternativamente, se você precisar visualizar o registro como estava em qualquer momento anterior. Esses tipos de requisitos são muito comuns em muitos tipos de sistemas.
fonte