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

C語言責(zé)任鏈模式示例代碼

 更新時(shí)間:2022年01月06日 09:04:56   作者:Hongggggggg  
大家好,本篇文章主要講的是C語言責(zé)任鏈模式示例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

介紹:

? 責(zé)任鏈模式是一種行為模式,它可以允許你將請求沿著處理者鏈進(jìn)行發(fā)送,收到請求以后, 每個處理者均可對請求進(jìn)行處理, 或?qū)⑵鋫鬟f給鏈上的下個處理者;

在這里插入圖片描述

作用:

將請求按照鏈的方式一一傳遞

類比:

? 公司申請報(bào)銷,首先要leader審批通過,然后是HR,再然后是財(cái)務(wù),最后是老板,一級一級的將請求傳遞;

示例:

#include <stdio.h>
#include <assert.h>
#include "list.h"


static LIST_HEAD(chain_head);

enum
{
    PASS,
    REFUSE,
};

typedef struct
{
    int money;
    char* files;
} info_t;

typedef int (*request_handle)(info_t* info);

typedef struct
{
    request_handle func;
    ListObj list;
}chain_node_t;


int leader(info_t* info)
{
    assert(info != NULL);
    if(info->money < 1000) //金額小于1000就行
    {
        return PASS;
    }
    return REFUSE;
}


int hr(info_t* info)
{
    assert(info != NULL);
    if(info->money < 2000 && info->files != NULL) //金額小于2000且材料齊全
    {
        return PASS;
    }
    return REFUSE;
}


int boss(info_t* info)
{
    assert(info != NULL);
    if(info->files != NULL) //材料齊全就行,不差錢
    {
        return PASS;
    }
    return REFUSE;
}

//審批流程: leader->hr->boss
chain_node_t req_table[] = { {.func = leader}, {.func = hr}, {.func = boss} };

void main(void)
{
    /*將審批節(jié)點(diǎn)添加到責(zé)任鏈上*/
    for(int i = 0; i < sizeof(req_table) / sizeof(req_table[0]); i++)
    {
        list_insert_before(&chain_head, &(req_table[i].list));
    }

    /*報(bào)銷內(nèi)容*/
    info_t info = {.money = 900, .files = "files"};

    ListObj *node;
    list_for_each(node, &chain_head)
    {
        chain_node_t* req = list_entry(node, chain_node_t, list);
        if(req->func(&info) != PASS)
        {
            /*報(bào)銷失敗*/
            printf("Failed\r\n");
            return;
        }
    }
    /*報(bào)銷成功*/
    printf("Success\r\n");
    return;
}

總結(jié)

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

相關(guān)文章

  • c語言之char*和unsigned?char*的區(qū)別及說明

    c語言之char*和unsigned?char*的區(qū)別及說明

    這篇文章主要介紹了c語言之char*和unsigned?char*的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Qt 數(shù)據(jù)庫QSqlDatabase使用示例

    Qt 數(shù)據(jù)庫QSqlDatabase使用示例

    本文主要介紹了Qt數(shù)據(jù)庫QSqlDatabase使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • C++結(jié)構(gòu)體作為函數(shù)參數(shù)傳參的實(shí)例代碼

    C++結(jié)構(gòu)體作為函數(shù)參數(shù)傳參的實(shí)例代碼

    這篇文章主要介紹了C++結(jié)構(gòu)體作為函數(shù)參數(shù)傳參的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • C語言實(shí)現(xiàn)手機(jī)電話簿管理系統(tǒng)

    C語言實(shí)現(xiàn)手機(jī)電話簿管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)手機(jī)電話簿管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++中vector可以作為map的鍵值實(shí)例代碼

    C++中vector可以作為map的鍵值實(shí)例代碼

    這篇文章主要介紹了C++中vector可以作為map的鍵值實(shí)例代碼,需要的朋友可以參考下
    2017-07-07
  • 編寫C++程序使DirectShow進(jìn)行視頻捕捉

    編寫C++程序使DirectShow進(jìn)行視頻捕捉

    這篇文章主要介紹了如何編寫C++程序來使DirectShow進(jìn)行視頻捕捉的方法,DirectShow是微軟公司在ActiveMovie和Video for Windows的基礎(chǔ)上推出的新一代基于COM(Component Object Model)的流媒體處理的開發(fā)包,要的朋友可以參考下
    2016-03-03
  • C語言實(shí)現(xiàn)基于控制臺的電子時(shí)鐘

    C語言實(shí)現(xiàn)基于控制臺的電子時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)基于控制臺的電子時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言深入回顧講解結(jié)構(gòu)體對齊

    C語言深入回顧講解結(jié)構(gòu)體對齊

    C 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲不同類型的數(shù)據(jù)項(xiàng),本篇讓我們來了解C 的結(jié)構(gòu)體內(nèi)存對齊
    2022-06-06
  • Qt編寫地圖遷徙圖的實(shí)現(xiàn)示例

    Qt編寫地圖遷徙圖的實(shí)現(xiàn)示例

    本文主要介紹了Qt編寫地圖遷徙圖的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Qt基于TCP實(shí)現(xiàn)客戶端與服務(wù)端的連接

    Qt基于TCP實(shí)現(xiàn)客戶端與服務(wù)端的連接

    這篇文章主要為大家詳細(xì)介紹了Qt基于TCP實(shí)現(xiàn)客戶端與服務(wù)端的連接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論

通州区| 临汾市| 松桃| 疏附县| 泰安市| 江安县| 牙克石市| 定兴县| 台中县| 渑池县| 和硕县| 大丰市| 仪征市| 抚顺市| 佳木斯市| 双鸭山市| 岚皋县| 黄山市| 博湖县| 福贡县| 泸定县| 准格尔旗| 巴林右旗| 榆社县| 繁峙县| 麻阳| 晋江市| 庆城县| 太仓市| 宣恩县| 江都市| 仁化县| 沙田区| 湖北省| 北辰区| 顺平县| 汤原县| 喀喇沁旗| 桃江县| 洪江市| 泗水县|