1. 程式人生 > >C語言和設計模式(命令模式)

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