C#中使用单个对象的方法实现Undo/Redo
2009-03-19 08:21:07 来源:WEB开发网如何应用单个对象表示变化的方法对任意应用程序Undo/Redo操作建模?
单个对象表示变化的方法如何对任意应用程序Undo/Redo操作建模将在以下步骤中讨论:
步骤1
首先识别出你希望哪些操作能支持Undo/Redo。然后,识别出你将在哪个容器下支持Undo/Redo以及你希望哪些对象支持Undo/Redo。
步骤2
为了进一步处理每个Undo/Redo操作,识别出需要被保存的属性。
步骤3
然后创建一个类(ChangeRepresentationObject),它包含支持全部操作Undo/Redo的所有属性。同样,准备一个动作类型enum,它将代表全部操作。这个动作类型enum是ChangeRepresentationObject类的一部分。
步骤4
然后创建一个名为UndoRedo的类,它包含两个类型的ChangeRepresentationObject栈。一个用于撤销操作,一个用于重做操作。该类将实现以下接口:
interface IUndoRedo
{
void Undo(int level);
void Redo(int level);
void InsertObjectforUndoRedo(ChangeRepresentationObject dataobject);
}
步骤5
然后实现具体方法:Undo、 Redo、InsertObjectforUndoRedo。
在每个Undo操作中:
◆首先检查Undo栈是否为空。
◆如果不是,则弹出一个ChangeRepresentationObject并将其压入重做栈。
◆检查动作类型。
◆然后基于动作类型,利用ChangeRepresentationObject的属性完成撤销操作。
在每个Redo操作中,你几乎做与Undo同样的事。
◆首先检查Redo栈是否为空。
◆如果不是,弹出一个ChangeRepresentationObject,然后将其压入撤销栈。
◆检查动作类型。
更多精彩
赞助商链接