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