C語言命令模式的目的主要是為了把命令者和執行者分開。老規矩,舉個范例吧。假設李老板是一家公司的頭兒,他現在讓他的秘書王小姐去送一封信。王小姐當然不會自己親自把信送到目的地,她會把信交給郵局來完成整個投遞的全過程,F在,我們就對投遞者、命令、發令者分別作出定義。
首先定義post的相關數據。
view plain typedef struct _Post { void (*do)(struct _Post* pPost);}Post;Post完成了實際的投遞工作,那么命令呢?
view plain typedef struct _Command { void* pData;void (*exe)(struct _Command* pCommand);
}Command;
void post_exe(struct _Command* pCommand)
{ assert(NULL != pCommand);
。≒ost*)(pCommand->pData)->do((Post*)(pCommand->pData));return;}我們看到了Post、Command的操作,那么剩下的就是boss的定義了。
view plain 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;}