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语言命令模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言 设计模式之访问者模式

    C语言访问者模式 概要: 访问者模式,听上去复杂一些.但是,这种模式用简单的一句话说,就是不同的人对不同的事物有不同的感觉.比如说吧,豆腐可以做成麻辣豆腐,也可以做成臭豆腐.可是,不同的地方的人未必都喜欢这两种豆腐.四川的朋友可能更喜欢辣豆腐,江浙的人就可能对臭豆腐更喜欢一些.那么,这种情况应该怎么用设计模式表达呢? typedef struct _Tofu { int type; void (*eat) (struct _Visitor* pVisitor, struct _Tofu* pTo

  • 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(cha

  • Python设计模式之命令模式简单示例

    本文实例讲述了Python设计模式之命令模式.分享给大家供大家参考,具体如下: 命令模式介绍: 在面向对象编程中,命令模式是概括所有方法信息的设计模式. 此模式对象包涵方法名,及其相关参数值. 命令模式是一个分类的观察者设计模式,在命令模式下,对象被概括为一个命令表单,此表单包涵了所有用户需要的方法. 举个例子:如果有个按钮是用户接口"red",当被触碰的时候,会启动后台的"turn red"接口.现在用户并不知道,通过什么类或者方法的接口能够让后台处理"

  • Android编程设计模式之命令模式详解

    本文实例讲述了Android编程设计模式之命令模式.分享给大家供大家参考,具体如下: 一.介绍 命令模式(Command Pattern),是行为型设计模式之一.命令模式相对于其他的设计模式来说并没有那么多的条条框框,其实它不是一个很"规范"的模式,不过,就是基于这一点,命令模式相对于其他的设计模式更为灵活多变.我们接触比较多的命令模式个例无非就是程序菜单命令,如在操作系统中,我们点击"关机"命令,系统就会执行一系列的操作,如先是暂停处理事件,保存系统的一些配置,然

  • PHP设计模式之命令模式示例详解

    前言 命令模式,也称为动作或者事务模式,很多教材会用饭馆来举例.作为顾客的我们是命令的下达者,服务员是这个命令的接收者,菜单是这个实际的命令,而厨师是这个命令的执行者.那么,这个模式解决了什么呢?当你要修改菜单的时候,只需要和服务员说就好了,她会转达给厨师,也就是说,我们实现了顾客和厨师的解耦.也就是调用者与实现者的解耦.当然,很多设计模式可以做到这一点,但是命令模式能够做到的是让一个命令接收者实现多个命令(服务员下单.拿酒水.上菜),或者把一条命令转达给多个实现者(热菜厨师.凉菜厨师.主食师傅

  • Java设计模式之命令模式详解

    命令模式 定义:将请求封装成对象,这可以让你使用不同的请求.队列.或者日志来参数化其他对象. 何时使用命令模式?当需要将发出请求的对象和执行请求的对象解耦的时候,使用命令模式. 在被解耦的两者之间是通过命令对象进行沟通的.命令对象封装了接收者和一个或一组动作. 调用者通过调用命令对象的execute()方法发出请求,这会使接收者的动作被调用. 调用者可以接收命令当作参数,甚至在运行时动态地进行. 优点: 1.降低了系统耦合度. 2.新的命令可以很容易添加到系统中去. 缺点:使用命令模式可能会导致

  • Python 设计模式中命令模式

    目录 1.命令模式 2.应用场景 3.代码示例 1.命令模式 命令模式的目的是解耦调用操作的对象(调用者)和提供实现的对象(接收者). 命令模式的思路是在调用者和接收者之间插入一个命令类(Command),该命令类定义了一个 execute 接口,并且该接口实际上是调用了接收者中的具体方法来执行具体命令,以此可以通过扩展命令子类来扩展多个不同的接收者. 这样调用此命令的调用者就和命令接收者之间解耦了. 优势: 封装性好,每个命令都被封装起来,对于客户端来说,需要什么功能就去调用相应的命令,而无需

  • .Net行为型设计模式之命令模式(Command)

    目录 一.动机(Motivate) 二.意图(Intent) 三.结构图(Structure) 四.模式的组成 五.命令模式的代码实现 六.命令模式的实现要点: 1.命令模式的优点: 2.命令模式的缺点: 3.命令模式的使用场景: 七..NET 中命令模式的实现 一.动机(Motivate) 在我们的现实生活中有很多例子可以拿来说明这个模式,我们还拿吃饺子这个事情来说.我的奶奶说了,今天想吃饺子,发出了命令,然后我奶奶就去看电视去了.我们夫妻俩收到命令就开始和面,做饺子馅,包饺子.饺子包好了,我

  • JavaScript设计模式之命令模式和状态模式详解

    目录 命令模式 命令模式介绍 代码实现 状态模式 状态模式介绍 代码实现 小结 命令模式 命令模式介绍 命令模式(Command)的定义是:用于将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及执行可撤销的操作. 也就是说改模式旨在将函数的调用.请求和操作封装成一个单一的对象,然后对这个对象进行一系列的处理.此外,可以通过调用实现具体函数的对象来解耦命令对象与接收对象. 代码实现 <!DOCTYPE html> <html lang=&qu

  • JavaScript设计模式之命令模式实例分析

    本文实例讲述了JavaScript设计模式之命令模式.分享给大家供大家参考,具体如下: 第一,命令模式: (1)用于消除调用者和接收者之间直接的耦合的模式,并且可以对(调用这个过程进行留痕操作) (2)真的不要乱用这个模式,以为他使你简单调用写法变得非常的复杂和有些难以理解. (3)你的业务出现了 (回退操作)(重做操作)的需求的时候你就要考虑使用这个模式了. 命令的原理: 一种情况为发出者直接作用于执行者,这样耦合度很高,另外一种情况为,在发出者和执行者之间增加一个用存储命令的命令访问库也即命

  • Python设计模式之命令模式原理与用法实例分析

    本文实例讲述了Python设计模式之命令模式原理与用法.分享给大家供大家参考,具体如下: 命令模式(Command Pattern):将请求封装成对象,从而使可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作. 下面是一个命令模式的demo: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话设计模式 设计模式--命令模式 命令模式(Command Patt

随机推荐