Memento: Deshacer con Instantáneas
Captura y restaura el estado interno de un objeto sin violar la encapsulación — implementa Deshacer almacenando instantáneas de estados pasados.
Por qué importa
El enfoque ingenuo para deshacer es exponer todos los campos de un objeto para que el código externo pueda guardarlos y restaurarlos. Pero esto rompe la encapsulación — cada cliente ahora depende de los internos del objeto. Añade un campo y el sistema de deshacer falla silenciosamente. El patrón Memento resuelve esto elegantemente: el propio objeto crea una instantánea (Memento) que es opaca para el exterior. El código externo almacena y devuelve la instantánea, pero nunca la inspecciona.
Memento vs Command para deshacer
Ambos patrones habilitan deshacer, pero de forma diferente. Command almacena la operación inversa — para deshacer "escribir Hola" elimina "Hola". Memento almacena una instantánea completa — restaurar es siempre un reemplazo simple. Command es más eficiente en memoria para cambios pequeños; Memento es más simple de implementar correctamente cuando el estado es complejo o no hay una inversa limpia. Usa Command cuando la inversa es obvia; Memento cuando no lo es.
💡Conclusión clave
La clave de Memento: el originador (Editor) crea su propia instantánea — ningún código externo necesita leer su estado privado para implementar deshacer.
🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.
Pista: La clave de Memento: el originador (Editor) crea su propia instantánea — ningún código externo necesita leer su estado privado para implementar deshacer.
✗ Tu versión