Undo与Redo

jiandingzhe 2012-07-05 09:04:55
我在做一个某种编辑器,因为行业背景太多,只能抽象点讲。
简单来说,它操纵、编辑一个四层的多叉树型数据,并产生某种图形展示。相应的操作有增删节点、移动节点、修改节点属性等等。
那么,为了实现这些操作的undo与redo,我大致想这样做:弄一个抽象动作的基类作为接口,基类有undo和redo。然后每种操作都是一个具体动作,都要写一个派生类,里面实现自己的undo与redo动作:比如移动操作的undo就是一个反向的移动;删除操作会保存删除的东西,然后redo就是把那个东西插回去。
这看起来是一个很巨量的工作啊……有什么建议没?

另:
1,这个树各层是异构的,也就是说我要对每层节点的插入、删除、移动、修改都弄成动作。
2,数据的图形化展示造成各层之间的业务逻辑是串着的,比如我修改了最末端节点的一些属性,有时会造成整个东西都要重新排版。
...全文
101 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2012-07-10
  • 打赏
  • 举报
回复
参考:
C++实现Command模式

里面有用Command实现undo/redo的示例代码。
jiandingzhe 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

的确需要如此。
思路对了,接下去就是体力活了。
[/Quote]
体力活太尼玛繁重了!!!突然发现除了包装所有的操作,很多原有的代码也需要重构。
hz张三 2012-07-10
  • 打赏
  • 举报
回复
的确需要如此。
思路对了,接下去就是体力活了。

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧