Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1741506
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: C/C++

2012-03-25 19:36:45

当一个请求需要被多个对象中的某一个处理时,可以用责任链模式


  1. interface Handler
  2. {
  3.     virtual void handleRequest() = 0;
  4. };

  5. class ConcretHandler
  6. {
  7.     virtual void handleRequest
  8.     {
  9.         if (canHandle())
  10.             handleIt();
  11.         else if (this->nextHandler != NULL)
  12.             nextHandler->handleRequest();
  13.     }
  14. };

这些具体的handler类构成一个链,当一个请求来到时,如果当前Handler可以处理则处理,否则把这个请求转给链中的下个handler处理。下个handler也以同样的方式对待该请求。

对于客户而言,它只需要与链中的第一个handler交互,而并不需要知道它的请求最后真正是被哪个handler处理的。

阅读(1215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~