大家好,本篇文章主要讲的是C语言设计模式之命令模式介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
介绍:
命令模式
是一种行为模式,它可以使代码解耦,便于维护;
假设我们现在要设计一个命令解析的模块:
传统方式:
void func1(void)
{
printf("func1\r\n");
}
void func2(void)
{
printf("func2\r\n");
}
void func3(void)
{
printf("func3\r\n");
}
void prase_cmd(char cmd)
{
switch(cmd)
{
case 0x01:
func1();
break;
case 0x02:
func2();
break;
case 0x03:
func3();
break;
default:
printf("cmd in invalid\r\n");
break;
}
}
传统方式是使用switch-case
对命令进行一一解析的,这样的方式随着命令的增加,prase_cmd
中的代码量会变得越来越多,也会越来越臃肿;
而使用命令模式就可以很好的避免传统模式带来的问题:
命令模式:
void func1(void)
{
printf("func1\r\n");
}
void func2(void)
{
printf("func2\r\n");
}
void func3(void)
{
printf("func3\r\n");
}
typedef void (*cmd_func) (void);
typedef struct
{
int cmd;
cmd_func func;
}cmd_t;
static cmd_t cmd_table[] =
{
{0x01, func1},
{0x02, func2},
{0x03, func3},
};
void prase_cmd(int cmd)
{
for(int index = 0; index < sizeof(cmd_table) / sizeof(cmd_t); index++)
{
if(cmd_table[index].cmd == cmd)
{
cmd_table[index].func();
return;
}
}
}
通过命令模式,我们可以很好的进行代码的维护与拓展,我们只需要对cmd_table
进行维护即可,无需再关注prase_cmd
里的内容,实现了代码的解耦;
总结
到此这篇关于C语言设计模式之命令模式介绍的文章就介绍到这了,更多相关C语言命令模式内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:C语言设计模式之命令模式介绍
猜你喜欢
- Qt计时器使用方法详解 2023-05-30
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- ubuntu下C/C++获取剩余内存 2023-09-18
- C++ 数据结构超详细讲解顺序表 2023-03-25
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言qsort()函数的使用方法详解 2023-04-26
- Easyx实现扫雷游戏 2023-02-06