目录
当前位置: 首页 > 文档资料 > C 语言程序设计 >

命令模式

优质
小牛编辑
150浏览
2023-12-01

命令模式

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

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