设为首页 加入收藏

TOP

C++设计模式实现--职责链模式(二)
2014-07-19 23:03:50 来源: 作者: 【 】 浏览:158
Tags:设计模式 实现 职责 模式

 

  //具体处理类 C

  class ConcreteHandleC: public Handle

  {

  public:

  void HandleRequest(int request)

  {

  if (request >= 1000 && request < 2000)

  {

  cout << "ConcreteHandleC deal with: " << request <

  }

  else if (this->GetSuccessor() != NULL)

  {

  this->GetSuccessor()->HandleRequest(request);

  }

  else

  {

  cout << "Can't deal with " << request << endl;

  }

  }

  };

  //////////////////////////////////////////////////////////////////////////

  //测试

  int main()

  {

  Handle* h1 = new ConcreteHandleA();

  Handle* h2 = new ConcreteHandleB();

  Handle* h3 = new ConcreteHandleC();

  //设置其上级

  h1->SetSuccessor(h2);

  h2->SetSuccessor(h3);

  h1->HandleRequest(300);

  h1->HandleRequest(600);

  h1->HandleRequest(1500);

  h1->HandleRequest(3000);

  delete h1;

  delete h2;

  delete h3;

  return 0;

  }

  三. 说明

  1. 职责链的特点是:当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHandler对象负责处理它。

  2. 职责链的好处是:请求者不用管哪个对象来处理,反正该请求会被处理。它只需保持一个后继者即可。

  3. 要注意的是:一个请求到链的最后可能也没有处理,所以一定要配置得当。

      

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇STL中map与hash_map的比较 下一篇C/C++中容器vector使用方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·About - Redis (2025-12-26 08:20:56)
·Redis: A Comprehens (2025-12-26 08:20:53)
·Redis - The Real-ti (2025-12-26 08:20:50)
·Bash 脚本教程——Li (2025-12-26 07:53:35)
·实战篇!Linux shell (2025-12-26 07:53:32)