zoukankan      html  css  js  c++  java
  • 责任链模式

    【1】什么是责任链模式?

    责任链模式:

    【2】责任链模式的代码示例:

    代码示例:

      1 #include<iostream>
      2 #include<string>
      3 using namespace std;
      4 
      5 class Request
      6 {
      7 public:
      8     string requestType;
      9     string requestContent;
     10     int number;
     11 };
     12 
     13 class Manager
     14 {
     15 protected:
     16     string name;
     17     Manager *superior;
     18 public:
     19     Manager(string name)
     20     {
     21         this->name = name;
     22     }
     23     void setSuperior(Manager *superior)
     24     {
     25         this->superior = superior;
     26     }
     27     virtual void requestApplications(Request *request) = 0;
     28 };
     29 
     30 class CommonManager : public Manager
     31 {
     32 public:
     33     CommonManager(string name) : Manager(name)
     34     {}
     35     void requestApplications(Request *request)
     36     {
     37         if (request->requestType == "请假" && request->number <= 2)
     38         {
     39             cout << name << " " << request->requestContent << " 请假天数: " << request->number << " 被批准" << endl;
     40         }
     41         else 
     42         {
     43             if (superior != NULL)
     44             {
     45                 superior->requestApplications(request);
     46             }
     47         }
     48     }
     49 };
     50 
     51 class Majordomo : public Manager
     52 {
     53 public:
     54     Majordomo(string name) : Manager(name)
     55     {}
     56     void requestApplications(Request *request)
     57     {
     58         if (request->requestType == "请假" && request->number <= 5)
     59         {
     60             cout << name << " " << request->requestContent << " 请假天数: " << request->number << " 被批准" << endl;
     61         }
     62         else 
     63         {
     64             if (superior != NULL)
     65             {
     66                 superior->requestApplications(request);
     67             }
     68         }
     69     }
     70 };
     71 
     72 
     73 class GeneralManager : public Manager
     74 {
     75 public:
     76     GeneralManager(string name) : Manager(name)
     77     {}
     78     void requestApplications(Request *request)
     79     {
     80         if (request->requestType == "请假")
     81         {
     82             cout << name << " " << request->requestContent << " 请假天数: " << request->number << " 被批准" << endl;
     83         }
     84     }
     85 };
     86 
     87 int main()
     88 {
     89     CommonManager *jingli = new CommonManager("经理"); 
     90     Majordomo *zongjian = new Majordomo("总监");
     91     GeneralManager *zongjingli = new GeneralManager("总经理");
     92     
     93     jingli->setSuperior(zongjian);
     94     zongjian->setSuperior(zongjingli);
     95     
     96     Request *request = new Request();
     97 
     98     request->requestType = "请假";
     99     request->requestContent = "李俊宏请假";
    100     request->number = 1;
    101     jingli->requestApplications(request);
    102 
    103     request->requestType = "请假";
    104     request->requestContent = "李俊宏请假";
    105     request->number = 4;
    106     jingli->requestApplications(request);
    107 
    108     request->requestType = "请假";
    109     request->requestContent = "李俊宏请假";
    110     request->number = 10;
    111     jingli->requestApplications(request);
    112 
    113     return 0;
    114 }
    115 //Result:
    116 /*
    117 经理 李俊宏请假 请假天数: 1 被批准
    118 总监 李俊宏请假 请假天数: 4 被批准
    119 总经理 李俊宏请假 请假天数: 10 被批准
    120 */
    View Code

     

    Good   Good   Study, Day   Day  Up.

    顺序  选择   循环  总结

  • 相关阅读:
    Linux下如何查看版本信息
    SUSE12Sp3安装配置.net core 生产环境(2)-安装.NET Core 2.2.1 runtime 并运行.NET代码
    NET CORE Learning
    JWT(JSON Web Token)原理简介
    定性分析与定量分析的异同及优缺点
    《React16免费基础视频教程》【2】
    《React16免费基础视频教程》【1】
    《狂神说-JUC》【3】
    《狂神说-JUC》【2】
    《狂神说-JUC》【1】
  • 原文地址:https://www.cnblogs.com/Braveliu/p/3956793.html
Copyright © 2011-2022 走看看