设为首页 加入收藏

TOP

设计模式——职责链模式(C++实现)
2017-10-10 13:48:43 】 浏览:10005
Tags:设计模式 职责 模式 实现

 

 

  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天,时间太长,超过公司规定

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇- cinfiguration.resolve.extensi.. 下一篇设计模式——职责链模式(C++实现..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目