命令模式如何实现撤销功能?

3

请问有人可以帮我理解在Java或C#中如何使用命令模式实现应用程序设计中的"撤销"功能吗?非常感谢任何解释。


@shmosel 或许 较深层次的副本适用于此,但我认为这个问题并没有涉及到它们中的任何一个。 - BradleyDotNET
@BradleyDotNET,你觉得它在说什么? - shmosel
@shmosel 为什么命令模式可以实现撤销,而不是最佳的撤销选项(嵌套重复触摸的答案涉及到这一点,但在我看来并不完全正确)。 - BradleyDotNET
1个回答

2
撤销功能需要存储用户最近的n个操作。通常,用户的操作只是一个函数调用,因此很难存储它。更难的是以可撤销的方式存储它。
通过将用户操作抽象为对象,您可以轻松地将一组这些对象放入数据结构(通常为Stack),如果您将Undo方法放在对象上,那么当用户请求撤销操作时,只需遍历该结构并调用Undo方法即可。
由于命令已经设置好封装操作(用户或其他),因此它是构建撤销功能的绝佳起点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接