Undo-Redo重复命令

所以,我知道undo / redo通常是通过命令模式实现的。 但是,当命令要重复x次时,撤消x次将对用户来说很麻烦。 例如,我有一个“int num”,当我按下键盘上的“+”时,程序将执行“++ num”。如果用户通过按“+”将num从0增加到50,则用户想要撤消,如何允许用户撤消一次,num将返回0。 如何实现undo以便它可以处理一系列重复的命令? 提前致谢!     
已邀请:
受监视的撤消框架(http://muf.codeplex.com)通过使用批处理操作的概念来实现此目的。您可以将一组操作标记为属于某个组,以便撤消系统将其作为工作单元撤消/重做。 此外,库允许您通过仅存储给定字段的第一个/最后一个值来优化情况。这样,撤消/重做逻辑不必应用所有50个操作。它可以通过将值设置回撤消批处理之前的值来简单地撤消。 警告:MUF库不使用传统的命令模式。它使用更多的memento模式,跟踪在底层域模型中发生的变化。 如果您需要具有真正的命令模式,那么您可以向撤消实现添加逻辑,以检查撤消堆栈上的条目。然后,例如,如果用户在“+”操作上点击撤消,则堆栈将开始撤消,并且只要它继续在堆栈上找到“+”操作就保持撤消。我已经在我无法批量处理事件的情况下使用此方法,但希望撤消堆栈一次自动撤消多个操作。     

要回复问题请先登录注册