文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言责任链模式代码怎么写

2023-06-22 08:47

关注

这篇文章主要讲解了“C语言责任链模式代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言责任链模式代码怎么写”吧!

介绍:

责任链模式是一种行为模式,它可以允许你将请求沿着处理者链进行发送,收到请求以后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者;

作用:

将请求按照链的方式一一传递

类比:

公司申请报销,首先要leader审批通过,然后是HR,再然后是财务,最后是老板,一级一级的将请求传递;

示例:

#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->bosschain_node_t req_table[] = { {.func = leader}, {.func = hr}, {.func = boss} };void main(void){        for(int i = 0; i < sizeof(req_table) / sizeof(req_table[0]); i++)    {        list_insert_before(&chain_head, &(req_table[i].list));    }        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)        {                        printf("Failed\r\n");            return;        }    }        printf("Success\r\n");    return;}

感谢各位的阅读,以上就是“C语言责任链模式代码怎么写”的内容了,经过本文的学习后,相信大家对C语言责任链模式代码怎么写这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯