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

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

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

介紹:

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

在這里插入圖片描述

作用:

將請(qǐng)求按照鏈的方式一一傳遞

類比:

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

示例:

#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語(yǔ)言責(zé)任鏈模式示例代碼的文章就介紹到這了,更多相關(guān)C語(yǔ)言責(zé)任鏈內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

    本文主要介紹了Qt數(shù)據(jù)庫(kù)QSqlDatabase使用示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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ì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • C語(yǔ)言實(shí)現(xiàn)手機(jī)電話簿管理系統(tǒng)

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

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

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

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

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

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

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

    本文主要介紹了Qt編寫地圖遷徙圖的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(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

最新評(píng)論

长春市| 日土县| 福清市| 新余市| 容城县| 富锦市| 文山县| 资兴市| 扶风县| 环江| 黄石市| 乌审旗| 开原市| 青阳县| 南木林县| 宁晋县| 墨竹工卡县| 富锦市| 云和县| 齐齐哈尔市| 高唐县| 谢通门县| 扶余县| 新河县| 太保市| 安岳县| 自贡市| 桓台县| 鸡东县| 轮台县| 突泉县| 上栗县| 兴业县| 呼和浩特市| 娄烦县| 得荣县| 依安县| 石河子市| 武隆县| 林甸县| 炉霍县|