設計模式 行爲模式 命令模式 c語言 版本實現

說道命令模式,我想起了uboot中的一些代碼,這篇文章中的代碼的靈感也來自uboot,但是我不知道uboot裏的那些代碼和設計模式中的命令模式是不是一個事,希望是吧。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Command {
    char name[10];
    void ( *docmd)();
};
void cmd_edit(){
    printf ("執行了edit操作\n");
}
void cmd_undo(){
    printf ("執行了undo操作\n");
}
void cmd_copy(){
    printf ("執行了copy操作\n");
}
void invoker(const char* name, struct Command cmdtbl[], int num){

    for (; num-- > 0; cmdtbl++){
        if(strcmp (name, cmdtbl->name) == 0)				//遍歷命令數組 找到需要的命令
        cmdtbl->docmd();
    }

}
int main (void) {
    struct Command cmdtbl[3];
    strcpy (cmdtbl[0].name, "EDIT"), cmdtbl[0].docmd = cmd_edit;
    strcpy (cmdtbl[1].name, "UNDO"), cmdtbl[1].docmd = cmd_undo;
    strcpy (cmdtbl[2].name, "COPY"), cmdtbl[2].docmd = cmd_copy;

    invoker("EDIT", cmdtbl, 3);
    invoker("COPY", cmdtbl, 3);
   // cmdtbl[0].docmd();

}


發佈了40 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章