设计模式初探——责任链 c语言版
来源:互联网 发布:搭建表白墙源码 编辑:程序博客网 时间:2024/06/05 07:39
刚开始学设计模式,也没按套路出牌,直接从行为型模式入手,查了查责任链,感觉和工作流联系挺大,或者说是业务流程,或者成为办公自动化。
曾经用过工作流,在公司里,比我我发起了一个工作流,下一步流到小组长那里,在下一步流到主任那里,小组长和主任都需要进行审核,审核不合格的话驳回,于是有可能驳回到我这,工作流可以正向和反向流动。
感觉责任链的好处是可以比较容易的增删某个流程,调整流程间的关系,而且结构也很清晰。
当时觉得这个东西很神奇,现在看了责任链的知识感觉有点联系,于是写了个驾校考试的小程序。
考试分为科目一,科目二,科目三,科目四没加,有三个就够我考的了。科目一90分,及格,科目二80分及格,科目三90分及格,只有通过了科目一才能考科目二,任何一可没通过则需重考,基本上是完全模拟真实考试情况,考试分数由随机数给出。
上图为两次执行的结果,看来不同人的考试水平相差甚远呐。
#include <stdio.h>#include <stdlib.h>week =0;int stu () { return rand()%50 +50;}struct Test { void (* taketest)(int score, struct Test* kemu); struct Test* next; struct Test* prev;};void test1 (int score, struct Test* kemu) { week++; if (score > 90) { printf ("理论考了 %d 分 > 90,你是天才!请准备下周考倒桩。\n", score); kemu->next->taketest (stu(), kemu->next); } else { printf ("理论考了 %d 分 < 90,昨晚喝多了吧!下周准备重考理论!\n", score); kemu->prev->taketest (stu(), kemu->prev); }}void test2 (int score, struct Test* kemu) { week++; if (score > 80) { printf ("倒桩考了 %d 分 > 80,你是天才!请准备下周考街试。\n", score); kemu->next->taketest (stu(), kemu->next); //重考科二,科二的prev的next还等于科二 } else { printf ("倒桩考了 %d 分 < 80,昨晚喝多了吧!下周准备重考街试!\n", score); kemu->prev->next->taketest (stu(), kemu->prev->next); }}void test3 (int score, struct Test* kemu) { week++; if (score > 90) { printf ("街试考了 %d 分 > 90, 地球人已经不能阻止你成为马路杀手了,你通过了所有考试!\n \总共用了 %d 周",score, week); return 0; } else { printf ("科目三考了 %d 分 < 90,昨晚喝多了吧!下周准备重考街试!\n", score); kemu->prev->next->taketest (stu(), kemu->prev->next); //重考科三,科二的prev的next还等于科三 }}int main (void) { srand((unsigned) time(0)); struct Test kemu1, kemu2, kemu3; kemu1.prev = &kemu1; //科一为过则重考科一 kemu1.next = &kemu2, kemu2.prev = &kemu1; //如果要增加或删减科目只要在这里调整指向关系即可 kemu2.next = &kemu3, kemu3.prev = &kemu2; kemu3.next = &kemu3; //科三为过则重考科三 kemu1.taketest = test1; kemu2.taketest = test2; kemu3.taketest = test3; kemu1.taketest (stu(),&kemu1);}
- 设计模式初探——责任链 c语言版
- 设计模式初探-责任链模式
- 设计模式初探-责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 【设计模式】——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式—责任链模式
- 大话设计模式—责任链模式
- Java设计模式—责任链模式
- 设计模式—责任链模式
- 设计模式初探-责任链模式(CHAIN OF RESPONSIBILITY)
- 局域网内QQ代理设置
- rh423 - redhat-ds如何移除已有ds并重新部署新的ds
- 杭电2111-Saving HDU
- 黑马程序员_Java基础1_(标示符、关键字、基本数据类型、运算符)
- 关于Java的IO的学习
- 设计模式初探——责任链 c语言版
- 关于TCP连接的Close
- Windows store app[Part 3]:认识WinRT的异步机制
- Python编程系列教程第12讲——属性和方法
- 自控力 笔记10 结语 完结篇
- VS2012打包发布图解
- rh423 - 主辅同步报错:there is no replicated area "dc=server119,dc=example,dc=com" on the consumer server
- centos6.4安装phpmyadmin
- MAXIM DL