Undo与Redo
我在做一个某种编辑器,因为行业背景太多,只能抽象点讲。
简单来说,它操纵、编辑一个四层的多叉树型数据,并产生某种图形展示。相应的操作有增删节点、移动节点、修改节点属性等等。
那么,为了实现这些操作的undo与redo,我大致想这样做:弄一个抽象动作的基类作为接口,基类有undo和redo。然后每种操作都是一个具体动作,都要写一个派生类,里面实现自己的undo与redo动作:比如移动操作的undo就是一个反向的移动;删除操作会保存删除的东西,然后redo就是把那个东西插回去。
这看起来是一个很巨量的工作啊……有什么建议没?
另:
1,这个树各层是异构的,也就是说我要对每层节点的插入、删除、移动、修改都弄成动作。
2,数据的图形化展示造成各层之间的业务逻辑是串着的,比如我修改了最末端节点的一些属性,有时会造成整个东西都要重新排版。