He estado leyendo sobre el patrón de recuerdo de varias fuentes de Internet. La información diferente de diferentes fuentes me ha dejado confundido sobre por qué este patrón es realmente necesario.
La implementación dofactory dice que la intención principal de este patrón es restaurar el estado del sistema.
Wiki dice que la intención principal es poder restaurar los cambios en el sistema. Esto tiene un impacto diferente: decir que es posible que un sistema tenga una implementación de memoria sin necesidad de restaurar. Y esa capacidad de restauración es una característica de esto.
OODesign dice que
A veces es necesario capturar el estado interno de un objeto en algún momento y tener la capacidad de restaurar el objeto a ese estado más adelante en el tiempo. Tal caso es útil en caso de error o falla.
Entonces, mi pregunta es ¿por qué exactamente usamos este? ¿Es para salvar estados anteriores o para promover la encapsulación entre el Guardián y el Recuerdo? ¿Por qué es este tipo de encapsulación tan importante?
Editar: Para aquellos que visiten, ¡revisen esta Implementación!
Editar : estoy trabajando en la implementación de una solución de recuerdo a mi problema. Publicaré otra pregunta al respecto y vincularé esa pregunta a esta. ¡Gracias a todos por responder con valiosas sugerencias!
Edición 3 : Aquí está el enlace a mi implementación de muestra
fuente
Por sí mismo, el patrón de recuerdo solo se usa para capturar y guardar estados. La encapsulación existe solo para proteger los estados del resto del sistema; una vez que se captura un estado, debe controlarse cuidadosamente. Por ejemplo, no tiene sentido poder cambiar un estado anterior una vez que se ha guardado (eso sería cambiar el historial) y podría no tener sentido simplemente regresar a un estado anterior de un objeto sin afectar a otros (para evitar el sistema de entrar en un estado completamente inválido).
El uso más común de un Memento que he visto es para admitir la funcionalidad de deshacer. También está relacionado con el almacenamiento de la funcionalidad de rehacer retrocediendo en el tiempo.
fuente
Todas estas definiciones lo conducen en la misma dirección; Todos dicen que el punto es poder restaurar algo a su estado anterior. Ese algo puede ser todo el sistema, o solo un solo objeto.
Este patrón es útil si un registro cambia de estado con el tiempo, pero tiene el requisito empresarial de poder restaurarlo a cualquier estado anterior en cualquier momento. O, alternativamente, si necesita poder ver el registro como estaba en cualquier momento anterior. Estos tipos de requisitos son muy comunes en muchos tipos de sistemas.
fuente