Propósito
Captura y externaliza el estado interno de un objeto, sin violar la encapsulación, de modo que el objeto puede ser restaurado a este estado más tarde.
Aplicabilidad
Use el patrón Memento cuando una parte del estado de un objeto debe ser guardado para que pueda ser restaurado más tarde y una interfaz para obtener el estado de un objeto podría romper la encapsulación exponiendo detalles de implementación.
Implementación
El patrón Memento necesita de los siguientes elementos:
• Memento: Almacena el estado interno de un objeto Originator. El Memento puede almacenar todo 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 o restaurar su estado interno, sólo Originator debería acceder a esta interfaz.
• Originator: 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.
Ventajas e Inconvenientes
Mantiene la encapsulación. Simplifica la clase Creador ya que no debe preocuparse de mantener las versiones del estado interno
Podría incurrir en un considerable gasto de memoria: encapsular y restaurar el estado no debe ser costoso, puede ser difícil en algunos lenguajes asegurar que sólo el Creador tenga acceso al estado del Memento.
Patrones Relacionados
• Command: Utiliza Mementos para registrar el estado de las acciones que no se pueden deshacer.
• State: La mayoría de los estados usan Memento.
viernes, 29 de mayo de 2009
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario