Duplicar posible:
Design Pattern for Undo Enginemejor patrón de diseño para "deshacer"
En general, ¿cómo lidiar con el apoyo a una función de "deshacer" en su aplicación? He trabajado tanto en aplicaciones web como en aplicaciones de escritorio, y nunca me he sentido realmente cómodo con ningún sistema de "deshacer" que haya creado.
Consulte este [enlace] (http://stackoverflow.com/a/5168936/4629101) para implementar Deshacer/Rehacer. –