C++设计模式之十三:Chain of Responsibility(职责链)
来源:互联网 发布:大智慧贵金属分析软件 编辑:程序博客网 时间:2024/06/14 04:10
一、意图:
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
二、类图:
三、组成元素:
Handler:请求接口;
ConcreteHandler:具体处理请求的接口;
四、实现代码:
#include<iostream>using namespace std;class Handler{public:Handler(Handler* p = 0) : pHandler(p) { }virtual void setSuccessor( Handler* pH) { pHandler = pH; }virtual void handlerRequest(int request){ }protected:Handler* pHandler;};class ConcreteHandler1 : public Handler{public:ConcreteHandler1(Handler* p ) : Handler( p ) { }void handlerRequest( int request ){if (request >=0 && request<= 10){cout<<"request= "<<request<<" handler"<<endl;}else{pHandler->handlerRequest(request);}}};class ConcreteHandler2 : public Handler{public:ConcreteHandler2(Handler* p) : Handler( p ) { }void handlerRequest( int request ){if (request >=10 && request<= 20){cout<<"request= "<<request<<" handler"<<endl;}else{pHandler->handlerRequest(request);}}};class ConcreteHandler3 : public Handler{public:ConcreteHandler3(Handler* p) : Handler( p ) { }void handlerRequest( int request ){if (request >=20 && request<= 30){cout<<"request= "<<request<<" handler"<<endl;}else{cout<<"本类一定要处理一切情况"<<endl;//pHandler->handlerRequest(request);}}};void main(){Handler* p1 = new ConcreteHandler1(0);//p1->handlerRequest(3); 测试Handler* p2 = new ConcreteHandler2(0);Handler* p3 = new ConcreteHandler3(0);p1->setSuccessor(p2);p2->setSuccessor(p3);int a[] = {7,9,16,13,18,21,35 };for ( int i = 0 ; i<= 6 ; ++i ){p1->handlerRequest(a[i]);}}
- C++设计模式之十三:Chain of Responsibility(职责链)
- 设计模式之职责链模式(Chain Of Responsibility)
- 十三、职责链模式Chain of Responsibility(行为型)
- 设计模式之Chain of Responsibility职责链模式
- 设计模式读书笔记之职责链模式(chain of responsibility)
- 设计模式之职责链模式(Chain of Responsibility )
- 【设计模式】之 Chain of Responsibility 职责链模式
- java设计模式之职责链模式 Chain of Responsibility
- 设计模式之职责链模式(Chain of Responsibility)
- 设计模式入门之职责链模式Chain Of Responsibility
- 设计模式之职责链模式(Chain of Responsibility)摘录
- 设计模式读书笔记之职责链模式(chain of responsibility)
- 【设计模式】行为模式之Chain of Responsibility职责链
- Chain of Responsibility(职责链设计模式)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之Chain of Responsibility(职责链)
- Shell排序
- 反射的小代码段
- Android 在 TextView 中设置超链接、颜色、字体、图片
- PMP九五至尊图
- C# 实现全局变量的方法
- C++设计模式之十三:Chain of Responsibility(职责链)
- decode函数 类似于判断语句
- 占位
- 关于static语句,构造代码块,构造方法的执行顺序
- PHP通过Thrift操作Hbase
- 装修日记--预算篇
- C++-------实现计算器
- web+fcgi
- xp安装iis6无法复制文件admexs.dll