2. Definición
• Este patrón tiene como finalidad almacenar el estado de un objeto
(o del sistema completo) en un momento dado de manera que se
pueda restaurar en ese punto de manera sencilla.
• Para ello se mantiene almacenado el estado del objeto para un
instante de tiempo en una clase independiente de aquella a la que
pertenece el objeto (pero sin romper la encapsulación), de forma
que ese recuerdo permita que el objeto sea modificado y pueda
volver a su estado anterior.
4. Clases y objetos que participan en este patrón:
• Memento
▫ Almacena el estado interno del objeto Originador.
▫ Impide el acceso a objetos que no sean el Originador.
• Originador
▫ Crea un “momento” que contiene un instante de su estado interno actual.
▫ Utiliza el “momento” para restaurar el estado interno.
• Vigilante
▫ Es el responsable de custodiar el “momento”.
▫ Nunca opera o examina el contenido del “momento”.
5. Ejemplo en Java
El siguiente programa ilustra el uso de "undo" con el patrón Memento.
Intervienen tres clases: la clase Originator (Originador) es una clase que
cambia de estado; la clase Caretaker (Portero) se encarga de registrar los
cambios del Originador; Memento (Recuerdo) guarda el objeto a
salvaguardar.
La salida es: