码迷,mamicode.com
首页 > 编程语言 > 详细

设计模式——职责链模式(C++实现)

时间:2017-05-24 00:45:27      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:string   技术   else   class   argc   char   jin   image   实现   

技术分享

 

 

  1 #include <iostream>
  2 #include <string>
  3 
  4 using namespace std;
  5 
  6 
  7 class Handler
  8 {
  9 public:
 10         Handler(Handler* pstHandler): m_pstHandler(pstHandler)
 11         {
 12 
 13         }
 14 
 15         virtual void HandleRequest(int request) = 0;
 16 
 17 protected:
 18         Handler* m_pstHandler;
 19 };
 20 
 21 class ConcreteHandler1: public Handler
 22 {
 23 public:
 24         ConcreteHandler1(Handler* pstHandler): Handler(pstHandler)
 25         {
 26 
 27         }
 28 
 29         virtual void HandleRequest(int request)
 30         {
 31                 if (request < 7)
 32                 {
 33                         cout<< "组长:批假"<< request<< ""<< endl;
 34                 }
 35                 else
 36                 {
 37                         m_pstHandler->HandleRequest(request);
 38                 }
 39         }
 40 };
 41 
 42 class ConcreteHandler2: public Handler
 43 {
 44 public:
 45         ConcreteHandler2(Handler* pstHandler): Handler(pstHandler)
 46         {
 47 
 48         }
 49 
 50         virtual void HandleRequest(int request)
 51         {
 52                 if (request < 15)
 53                 {
 54                         cout<< "总监:批假"<< request<< ""<< endl;
 55                 }
 56                 else
 57                 {
 58                         m_pstHandler->HandleRequest(request);
 59                 }
 60         }
 61 };
 62 
 63 class ConcreteHandler3: public Handler
 64 {
 65 public:
 66         ConcreteHandler3(Handler* pstHandler): Handler(pstHandler)
 67         {
 68 
 69         }
 70 
 71         virtual void HandleRequest(int request)
 72         {
 73                 if (request < 30)
 74                 {
 75                         cout<< "经理:批假"<< request<< ""<< endl;
 76                 }
 77                 else
 78                 {
 79                         cout<< "经理:"<< request<< "天,时间太长,超过公司规定"<< endl;
 80                 }
 81         }
 82 };
 83 
 84 int main(int argc, char* argv[])
 85 {
 86         Handler* jingli = new ConcreteHandler3(NULL);
 87         Handler* zongjian = new ConcreteHandler2(jingli);
 88         Handler* zuzhang = new ConcreteHandler1(zongjian);
 89 
 90         zuzhang->HandleRequest(12);
 91         zuzhang->HandleRequest(15);
 92         zuzhang->HandleRequest(5);
 93         zuzhang->HandleRequest(31);
 94 
 95         delete jingli;
 96         delete zongjian;
 97         delete zuzhang;
 98 
 99         return 0;
100 }
101 //////////////////////////////////
102 [root@ ~/learn_code/design_pattern/20_chain]$ ./chain               
103 总监:批假12天
104 经理:批假15天
105 组长:批假5天
106 经理:31天,时间太长,超过公司规定

 

设计模式——职责链模式(C++实现)

标签:string   技术   else   class   argc   char   jin   image   实现   

原文地址:http://www.cnblogs.com/070412-zwc/p/6896732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!