命令模式如何启用撤消?

How does Command Pattern enables Undo?

有人可以帮助我了解 Java 或 C# 中的命令模式如何在应用程序设计中启用 "undo" 功能吗?任何解释将不胜感激。

撤消功能要求您存储最后 n 次用户操作。通常,用户操作只会导致函数调用,因此很难存储它。以不可撤销的方式存储它更难。

通过将用户操作抽象为对象,您可以轻松地将这些对象的集合放入数据结构中(通常为 Stack),如果将 Undo 方法放入对象中,您只需遍历结构并在用户请求撤消操作时调用 Undo 方法。

由于 Command 已经设置为封装操作(用户或其他),因此它是构建撤消功能的绝佳起点。