C语言和设计模式(命令模式)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

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

首先定义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;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值