¿Para qué es la clase "Memento" en el patrón de diseño Memento?

8

En el patrón de diseño "Memento" de Gang of Four , la Mementoclase parece un envoltorio inútil que en realidad no me proporciona ningún valor.

¿Para qué sirve? ¿Hay alguna razón por la que no puedas pasar el Stringobjeto (en el ejemplo de Wikipedia)?

Jonas H.
fuente

Respuestas:

11

La clase de recuerdo es la que contiene los diferentes estados con los que está tratando en su objeto; es lo que habilita la funcionalidad "deshacer / rehacer".

El ejemplo al que se ha vinculado en Wikipedia es bastante simplista, donde el "estado" es solo un valor de cadena. Tenga en cuenta que el estado podría ser un conjunto de propiedades que es posible que desee restaurar en "lote" y tal vez tenga varios puntos de "deshacer".

Oded
fuente
44
También tenga en cuenta que el uso de .clone()en ese ejemplo de Wikipedia es una práctica extremadamente mala. Nunca funcionará como lo desea, especialmente en este patrón. Quien escribió ese ejemplo necesita que les quiten el teclado.
El objeto de recuerdo en el patrón de recuerdo 'vainilla' se usa exclusivamente para habilitar "deshacer". El ejemplo de wikipedia (que realmente no es tan malo IMO) parece confirmar esto ...
vaughandroid