我正处于应用程序的设计过程中,我想将command pattern用于撤消/重做目的。我对命令模式进行了一些研究,但我唯一没有得到的是:命令是否应该有undo和redo方法,或者我应该创建两个单独的命令,一个用于撤销,一个用于重做,并从中调用主要命令本身?
答案 0 :(得分:11)
命令对象本身应该实现撤消/重做功能。
通常从命令管理器维护的堆栈中推送和弹出命令,以实现多级撤消。当执行命令时,它们被推入堆栈,当它们被撤消时,它们将从堆栈中弹出。
memento模式将与命令模式结合使用,它不能替代命令模式的使用。它将用于维护撤消操作所需的状态。
答案 1 :(得分:2)
您可能还想考虑这个memento模式,我们使用它并且它可以很好地用于撤消。