Patrón Memento

PUBLICADO: 2026-08-17
AUTOR: MANUEL PRIETO
Patrones de Diseño

💡 Ver Caso Práctico: Ejemplo Práctico del Patrón Memento

Memento (Recuerdo) es un patrón de diseño comportamental que permite guardar y restaurar el estado previo de un objeto sin revelar los detalles de su implementación.

Propósito y Caso de Uso

Utiliza Memento cuando necesites implementar puntos de guardado o funcionalidad deshacer (undo) sin romper el encapsulamiento del objeto original (ej. un editor de formularios que debe volver a un estado anterior tras un error de validación). A diferencia del Patrón Command (que registra acciones para revertirlas paso a paso), Memento captura una fotografía completa del estado en un momento dado.

Estructura del Patrón

  1. Originador (Originator): El objeto cuyo estado se quiere guardar; crea y restaura mementos.
  2. Memento: Objeto inmutable que almacena una copia del estado del originador, con acceso restringido desde fuera.
  3. Cuidador (Caretaker): Guarda la colección de mementos (historial), sin acceder a su contenido interno.
Cargando diagrama...

Flujo de Funcionamiento

  1. Captura: El originador crea un memento con una copia de su estado actual.
  2. Almacenamiento: El cuidador guarda el memento en una pila o historial, sin inspeccionar su contenido.
  3. Restauración: El originador recibe un memento anterior y reconstruye su estado a partir de él.

Ejemplos de Implementación Reales

Cuándo NO usarlo

Si el estado del objeto es trivial (2-3 valores primitivos), copiarlo directamente en una variable es más simple que crear una clase Memento dedicada (YAGNIGlosarioYAGNI (You Aren't Gonna Need It)Principio de Extreme Programming (XP) que establece que un programador no debe añadir funcionalidad hasta que sea estrictamente necesario. Su objetivo es evitar la sobre-ingeniería (over-engineering), previniendo código para funcionalidades hipotéticas.Ver término completo →).