求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 

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

命令模式
49 次浏览
12次  
 捐助

命令模式的目的主要是为了把命令者和执行者分开。老规矩,举个范例吧。假设李老板是一家公司的头儿,他现在让他的秘书王小姐去送一封信。王小姐当然不会自己亲自把信送到目的地,她会把信交给邮局来完成整个投递的全过程。现在,我们就对投递者、命令、发令者分别作出定义。

首先定义post的相关数据。

typedef struct _Post  
{
void (*do)(struct _Post* pPost);
}Post;

Post完成了实际的投递工作,那么命令呢?

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的定义了。

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;
}


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

1元 10元 50元





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



49 次浏览
12次
 捐助
 

每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号