14

我正处于应用程序的设计过程中,我想将命令模式用于撤消/重做目的。我对命令模式进行了一些研究,但唯一没有得到的是:一个命令是否应该具有撤消和重做方法,或者我应该创建两个单独的命令,一个用于撤消,一个用于重做,并从主要命令本身?

4

2 回答 2

11

命令对象本身应该实现撤消/重做功能。

命令通常从命令管理器维护的堆栈中推送和弹出以实现多级撤消。当命令被执行时,它们被压入堆栈,当它们被撤消时,它们被从堆栈中弹出。

memento 模式将与命令模式一起使用,它不能替代命令模式的使用。它将用于维护撤消操作所需的状态。

于 2010-02-06T21:49:03.593 回答
2

您可能还想为此考虑 memento 模式,我们使用它,它非常适合撤消。

于 2010-02-06T23:08:14.880 回答