当前位置:  开发笔记 > 开发工具 > 正文

用于实施UNDO和REDO选项的数据结构

如何解决《用于实施UNDO和REDO选项的数据结构》经验,为你挑选了2个好方法。

我想实现UNDO和REDO选项(正如我们在MS word等中看到的那样).你能为我建议一个数据结构,我该如何实现呢?



1> Jason Punyon..:

它不是数据结构,而是设计模式.你正在寻找命令模式.

标准是将Command对象保留在堆栈中以支持多级撤消.为了支持重做,第二个堆栈会保留你已经完成的所有命令.因此,当您弹出撤消堆栈以撤消命令时,您可以将弹出的相同命令推送到重做堆栈.重做命令时,您可以反向执行相同的操作.弹出重做堆栈并将弹出的命令推回到撤消堆栈中.


如果你推动另一个命令,总是清除重做堆栈也很重要.
数据结构是Stack与"Command"对象的实例.
我觉得命令模式不一定是你如何实现撤销,它只是一个选项,也不是OP问题的答案.undo/redo堆栈就是答案.(虽然我猜他确实提到了MSWord.)

2> Hank Gay..:

实际上,这个功能的标准模式(Gang of Four,甚至)是Memento.

此外,虽然大多数程序使用Undo/Redo堆栈,但某些文本编辑器的功能优先于Undo/Redo 树,因此如果它们撤消一些命令,尝试新命令并改变主意,它们就不会丢失整个历史记录.


你是对的.如果您添加有关它如何与命令模式交互的更多信息,这将是一个很好的答案.
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有