C語言和設計模式(命令模式)
阿新 • • 發佈:2019-02-01
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
命令模式的目的主要是為了把命令者和執行者分開。老規矩,舉個範例吧。假設李老闆是一家公司的頭兒,他現在讓他的祕書王小姐去送一封信。王小姐當然不會自己親自把信送到目的地,她會把信交給郵局來完成整個投遞的全過程。現在,我們就對投遞者、命令、發令者分別作出定義。
命令模式的目的主要是為了把命令者和執行者分開。老規矩,舉個範例吧。假設李老闆是一家公司的頭兒,他現在讓他的祕書王小姐去送一封信。王小姐當然不會自己親自把信送到目的地,她會把信交給郵局來完成整個投遞的全過程。現在,我們就對投遞者、命令、發令者分別作出定義。
首先定義post的相關資料。
typedef struct _Post
{
void (*do)(struct _Post* pPost);
}Post;
Post完成了實際的投遞工作,那麼命令呢?
我們看到了Post、Command的操作,那麼剩下的就是boss的定義了。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 _Boss
{
Command* pCommand;
void (*call)(struct _Boss* pBoss);
}Boss;
void boss_call(struct _Boss* pBoss)
{
assert(NULL != pBoss);
pBoss->pCommand->exe(pBoss->pCommand);
return;
}