說道命令模式,我想起了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();
}