最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言設(shè)計模式之命令模式介紹

 更新時間:2022年01月07日 11:09:31   作者:Hongggggggg  
大家好,本篇文章主要講的是C語言設(shè)計模式之命令模式介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

介紹:

? 命令模式是一種行為模式,它可以使代碼解耦,便于維護;

假設(shè)我們現(xiàn)在要設(shè)計一個命令解析的模塊:

傳統(tǒng)方式:

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;
    }
}

傳統(tǒng)方式是使用switch-case對命令進行一一解析的,這樣的方式隨著命令的增加,prase_cmd中的代碼量會變得越來越多,也會越來越臃腫;

而使用命令模式就可以很好的避免傳統(tǒng)模式帶來的問題:

命令模式:

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進行維護即可,無需再關(guān)注prase_cmd里的內(nèi)容,實現(xiàn)了代碼的解耦;

總結(jié)

到此這篇關(guān)于C語言設(shè)計模式之命令模式介紹的文章就介紹到這了,更多相關(guān)C語言命令模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • C語言代碼 模塊化實現(xiàn)三子棋

    C語言代碼 模塊化實現(xiàn)三子棋

    這篇文章主要為大家詳細介紹了C語言 模塊化實現(xiàn)三子棋程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語言的動態(tài)內(nèi)存管理你了解嗎

    C語言的動態(tài)內(nèi)存管理你了解嗎

    這篇文章主要為大家詳細介紹了C語言的動態(tài)內(nèi)存管理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 淺談C語言中結(jié)構(gòu)體的初始化

    淺談C語言中結(jié)構(gòu)體的初始化

    本篇文章是對C語言中結(jié)構(gòu)體的初始化進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中std::shuffle的使用小結(jié)

    C++中std::shuffle的使用小結(jié)

    std::shuffle是C++標準庫中的一個函數(shù),用于對容器中的元素進行隨機排列,本文主要介紹了C++中std::shuffle的使用小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • vscode 安裝go第三方擴展包填坑記錄的詳細教程

    vscode 安裝go第三方擴展包填坑記錄的詳細教程

    這篇文章主要介紹了vscode 安裝go第三方擴展包填坑記錄,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Matlab實現(xiàn)生成箭頭坐標軸詳解

    Matlab實現(xiàn)生成箭頭坐標軸詳解

    這篇文章主要介紹了如何利用Matlab實現(xiàn)生成箭頭坐標軸,為坐標軸增添箭頭,文中的示例代碼講解詳細,對我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • C++lambda表達式使用介紹

    C++lambda表達式使用介紹

    Lambda 表達式(lambda expression)是一個匿名函數(shù),Lambda表達式基于數(shù)學(xué)中的λ演算得名。本文就來為大家詳細講講C++中Lambda表達式的使用,需要的可以參考一下
    2022-08-08
  • C++的函數(shù)與指針

    C++的函數(shù)與指針

    今天小編就為大家分享一篇關(guān)于C++函數(shù)與指針的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-10-10
  • C語言:變量的作用域和生命周期詳解

    C語言:變量的作用域和生命周期詳解

    這篇文章主要介紹了C++作用域與生命周期的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-08-08
  • C語言實現(xiàn)三子棋(井字棋)算法

    C語言實現(xiàn)三子棋(井字棋)算法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)三子棋(井字棋)算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

平顺县| 永昌县| 清新县| 义马市| 黑龙江省| 松江区| 麻阳| 宜黄县| 吴堡县| 黑山县| 黄梅县| 弥渡县| 遵化市| 镶黄旗| 晋江市| 绿春县| 山西省| 双辽市| 景东| 蛟河市| 临沂市| 伊川县| 聊城市| 邵武市| 松江区| 通州区| 丰宁| 门头沟区| 昂仁县| 新田县| 江川县| 兰考县| 阜平县| 印江| 师宗县| 日照市| 山阴县| 玉树县| 临高县| 油尖旺区| 翁源县|