Patrón Memento
Ejemplo: Marcador de Futbol
El patrón de comportamiento Memento, un modelo para capturar (parte o todo) y externalizar el estado interno de un objeto para restaurarlo más tarde sin violar el encapsulamiento. Puede ser usado en combinación con los Patrones Command e Iterator.
El patrón Memento es aplicable cuando:
- Todo o parte del estado de un objeto debe ser guardado para ser restaurado más tarde.
- Cuando una interfaz directa para obtener el estado de un objeto exponga detalles de su implementación
Participantes
· Memento.
- - Almacena el estado interno de un objeto Originator. El Memento puede almacenar mucho o parte del estado interno de Originator.
- - Tiene dos interfaces. Una para Caretaker, que le permite manipular el Memento únicamente para pasarlo a otros objetos. La otra interfaz sirve para que Originator pueda almacenar/restaurar su estado interno, sólo Originator puede acceder a esta interfaz, al menos en teoría.
- - Originator crea un objeto Memento conteniendo una fotografía de su estado interno.
- - Originator usa a Memento para restaurar su estado interno.
· Caretaker
- - Es responsable por mantener a salvo a Memento.
- - No opera o examina el contenido de Memento
Patrones relacionados
· Command: Puede usar “Mementos” para guardar el estado de operaciones restaurables.
· Iterator: “Mementos” puede ser usado con Iterator para buscar colecciones para estados específicos.
Ejemplo: Marcador de Fútbol
Se trata de realizar un marcador de fútbol, donde deberá aparecer:
-Resultado del 1º tiempo
-Resultado del 2º tiempo
-Resultado Final
-Nombre de Jugadores y minuto de cuando marca gol según el equipo.
Además se podrá deshacer y rehacer la introducción de resultados y jugadores.
Clases en el Proyecto:
Clase State:
Esta clase se encargará de almacenar los datos que nos interese del estado.
Clase Memento:
Clase Caretaker:
Programa Principal:
Enlace de descarga: enlace a box
Enlaces:
http://www.slideshare.net/An3s/patron-memento
http://migranitodejava.blogspot.com.es/2011/06/memento.html
http://www.freewebz.com/amanecer/personal/papers/paper.memento.pdf