En mi aplicación, deseo proporcionar al usuario una pequeña funcionalidad de deshacer. No hay muchas acciones que el usuario pueda deshacer. En particular, las acciones son:¿Cómo implementar la funcionalidad de deshacer?
- añadir notas a un objeto
- color de un objeto
- Tag una objcet con una cadena
Ahora pensé acerca de cómo implementar esto. Primero pensé en una clase de acción que es la clase base abstracta para las 3 acciones diferentes que puede tomar el usuario. Cada vez que el usuario asume estas acciones, se crea una nueva instancia apropiada de una subclase de esta clase de Acción abstracta y se inserta en una lista que contiene todas las acciones.
Cuando el usuario desea deshacer algo, la lista se muestra al usuario y puede elegir qué acción desea deshacer.
Ahora estaba pensando lo que tiene que ser almacenado en un objeto tal acción:
- el estado del objeto antes de la acción
- la acción real que fue tomada (por ejemplo, la cadena que se añadió a las notas de un objeto)
No estoy seguro si esto es suficiente. También pensé en algo así como un orden cronológico, pero esto debería ser necesario ya que la lista puede mantenerse cronológicamente correcta.
¿Hay alguna otra cosa que deba considerar?
Busque el patrón de recuerdo en GOF – pastjean
O patrón de comando – slayerIQ
Vea también aquí: http://stackoverflow.com/questions/49755/design-pattern-for-undo-engine –