介绍:

命令模式是一种行为模式,它可以使代码解耦,便于维护;


假设我们现在要设计一个命令解析的模块:

传统方式:

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语言)相关推荐

  1. 设计模式 之 命令模式

    2019独角兽企业重金招聘Python工程师标准>>> 设计模式 之 命令模式 命令模式比较简单,不过多赘述 为什么需要命令模式 将"行为请求者"与"行 ...

  2. 乐在其中设计模式(C#) - 命令模式(Command Pattern)

    原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...

  3. 23种设计模式之命令模式和策略模式的区别

    文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...

  4. C语言和设计模式(命令模式)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 命令模式的目的主要是为了把命令者和执行者分开.老规矩,举个范例吧.假设李老板是一家公司的头儿, ...

  5. 设计模式之命令模式(Command)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  6. 设计模式之命令模式详解(故事版)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 背景:小左是魔都某公司技术部 ...

  7. plsql执行command命令控制台出现乱码_设计模式系列 — 命令模式

    点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章.本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 23种设计模式速记 单例(sin ...

  8. 设计模式复习-命令模式

    #pragma once #include "stdafx.h" #include<set> #include<string> #include<io ...

  9. Java 设计模式之命令模式

    一.了解命令模式 1.1 什么是命令模式 命令模式将"请求"封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象.命令模式也支持可撤销的操作.这种说法比较难以理解,换种说法 ...

最新文章

  1. 肠·道 | 邱琇:靓汤/烧香影响母婴健康?看巨大出生队列如何揭秘!
  2. python中的format什么意思中文-Python中format()格式输出全解
  3. Flv网络播放器制作全攻略
  4. 7 pe系统安装_【软件课程之家】PE系统安装教程
  5. css加了固定定位就不显示内容_前端开发必备,学好”定位“向菜鸟说拜拜
  6. u-boot的patch文件制作
  7. html 二级试题,计算机二级考试WEB试题及答案
  8. Web框架——Flask系列之设置和读取cookie(十五)
  9. 按冯诺依曼提出的计算机类型,2011年12月24日计算机一级考试题目广西
  10. selenium设置js加载的时限,防止持续加载页面
  11. [Stage3D]硬件加速的径向模糊
  12. springMVC+hibernate + layui分页
  13. python用sort()函数对列表进行排序,从最后一个元素开始判断,超详细讲解,图文+视频
  14. 【Tools】常用PDF转Word工具
  15. 新手如何当好办公室主任?傻瓜才做“二当家的”,高手都懂这5个潜规则
  16. Vagrant + VMBox 踩坑记录
  17. 【转载】客单价是什么意思?如何提高客单价?
  18. 【PyTorch】下载的预训练模型的保存位置(Windows)
  19. CPU的主频/核心数
  20. 【c】c语言中逗号运算符和逗号表达式

热门文章

  1. 微信开发如何在本地模拟微信登陆
  2. 2021高考地理生物成绩查询,2021年北京市中考生物地理成绩查询时间
  3. 《Going Deeper with Convolutions》阅读笔记
  4. 正整数 n 分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大
  5. 赵匡胤为何不把皇位传给儿子却传弟弟赵光义
  6. Linux中的文件IO以及JDK中的NIO模型简介
  7. 2019网易游戏测试开发实习电话面试总结
  8. ap计算机课程的内容,AP系列七|解读AP计算机课程与考试
  9. 铂链获美国顶级区块链投资基金 Draper Dragon Digital Fund投资
  10. win10 uwp iot