求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 
 

C语言和设计模式 教程
开篇
单件模式
原型模式
组合模式
模板模式
工厂模式
责任链模式
抽象工厂模式
迭代器模式
外观模式
代理模式
享元模式
装饰模式
适配器模式
策略模式
中介者模式
建造者模式
桥接模式
观察者模式
备忘录模式
解释器模式
命令模式
状态模式
访问者模式
继承、封装、多态
 
 

Tcl环境设置
831 次浏览
37次  

备忘录模式的起源来自于撤销的基本操作。有过word软件操作经验的朋友,应该基本上都使用过撤销的功能。举个例子,假设你不小心删除了好几个段落的文字,这时候你应该怎么办呢?其实要做的很简单,单击一些【撤销】就可以全部搞定了。撤销按钮给我们提供了一次反悔的机会。

既然是撤销,那么我们在进行某种动作的时候,就应该创建一个相应的撤销操作?这个撤销操作的相关定义可以是这样的。

typedef struct _Action  
{
int type;
struct _Action* next;

void* pData;
void (*process)(void* pData);

}Action;

数据结构中定义了两个部分:撤销的数据、恢复的操作。那么这个撤销函数应该有一个创建的函数,还有一个恢复的函数。所以,作为撤销动作的管理者应该包括,

typedef struct _Organizer  
{
int number;
Action* pActionHead;

Action* (*create)();
void (*restore)(struct _Organizer* pOrganizer);
}Organizer;

既然数据在创建和修改的过程中都会有相应的恢复操作,那么要是真正恢复原来的数据也就变得非常简单了。

void restore(struct _Organizer* pOrganizer)  
{
Action* pHead;
assert(NULL != pOrganizer);

pHead = pOrganizer->pActionHead;
pHead->process(pHead->pData);
pOrganizer->pActionHead = pHead->next;
pOrganizer->number --;
free(pHead);
return;
}


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



831 次浏览
37次
 捐助