C语言和设计模式(命令模式)【文章都是来自网络,只要自己吸取了就是自己的】
2012-03-05 12:34
661 查看
命令模式的目的主要是为了把命令者和执行者分开。老规矩,举个范例吧。假设李老板是一家公司的头儿,他现在让他的秘书王小姐去送一封信。王小姐当然不会自己亲自把信送到目的地,她会把信交给邮局来完成整个投递的全过程。现在,我们就对投递者、命令、发令者分别作出定义。
首先定义post的相关数据。
[cpp]
view plaincopyprint?
typedef struct _Post
{
void (*do)(struct _Post* pPost);
}Post;
[cpp]
view plaincopyprint?
typedef struct _Boss
{
Command* pCommand;
void (*call)(struct _Boss* pBoss);
}Boss;
void boss_call(struct _Boss* pBoss)
{
assert(NULL != pBoss);
pBoss->pCommand->exe(pBoss->pCommand);
return;
}
首先定义post的相关数据。
[cpp]
view plaincopyprint?
typedef struct _Post
{
void (*do)(struct _Post* pPost);
}Post;
[cpp] view plaincopyprint? typedef struct _Command { void* pData; void (*exe)(struct _Command* pCommand); }Command; void post_exe(struct _Command* pCommand) { assert(NULL != pCommand); (Post*)(pCommand->pData)->do((Post*)(pCommand->pData)); return; } typedef struct _Command { void* pData; void (*exe)(struct _Command* pCommand); }Command; void post_exe(struct _Command* pCommand) { assert(NULL != pCommand); (Post*)(pCommand->pData)->do((Post*)(pCommand->pData)); return; }我们看到了Post、Command的操作,那么剩下的就是boss的定义了。
[cpp]
view plaincopyprint?
typedef struct _Boss
{
Command* pCommand;
void (*call)(struct _Boss* pBoss);
}Boss;
void boss_call(struct _Boss* pBoss)
{
assert(NULL != pBoss);
pBoss->pCommand->exe(pBoss->pCommand);
return;
}
相关文章推荐
- C语言和设计模式(之单件模式)【文章都是来自网络,只要自己吸取了就是自己的】 .
- C语言和设计模式(策略模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(之组合模式)【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(建造者模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(之模板模式)【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(桥接模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(工厂模式)【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(责任链模式)【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(备忘录模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(抽象工厂模式)【文章都是来自网络,只要自己吸取了就是自己的】 .
- C语言和设计模式(迭代器模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(享元模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(装饰模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(访问者模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(-)【文章都是来自网络,只要自己吸取了就是自己的】
- C语言和设计模式(继承、封装、多态) 【文章都是来自网络,只要自己吸取了就是自己的】
- C++实现网络服务器命令模式(设计及模板实现)
- 改进卷积神经网络,你需要这14种设计模式(转载自机器之心微信号,mark一下当自己网络训练不好时可以看看)
- 设计模式之迭代器模式 此篇文章为自己所看 闲人莫进
- C语言和设计模式(命令模式)