Chain of Responsibility 职责链模式
来源:互联网 发布:知百家传媒 编辑:程序博客网 时间:2024/04/29 16:32
GOOD:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理为止。
例:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//请求
class Request
{
public:
string m_strContent;
int m_nNumber;
};
//管理者
class Manager
{
protected:
Manager* manager;
string name;
public:
Manager(string temp)
{
name = temp;
}
void SetSuccessor(Manager* temp)
{
manager = temp;
}
virtual void GetRequest(Request* request) = 0;
};
//经理
class CommonManager : public Manager
{
public:
CommonManager(string strTemp) : Manager(strTemp){}
virtual void GetRequest(Request* request)
{
if ( request->m_nNumber>=0 && request->m_nNumber<10 )
{
cout<<name<<"处理了"<<request->m_nNumber<<"个请求"<<endl;
}
else
{
manager->GetRequest(request);
}
}
};
//总监
class MajorDomo : public Manager
{
public:
MajorDomo(string name) : Manager(name){}
virtual void GetRequest(Request* request)
{
if(request->m_nNumber>=10)
{
cout<<name<<"处理了"<<request->m_nNumber<<"个请求"<<endl;
}
}
};
//客户端
int main()
{
Manager * common = new CommonManager("张经理");
Manager * major = new MajorDomo("李总监");
common->SetSuccessor(major);
Request* req = new Request();
req->m_nNumber = 33;
common->GetRequest(req);
req->m_nNumber = 3;
common->GetRequest(req);
return 0;
}
- 职责链模式(Chain Of Responsibility Pattern)
- 职责链模式(Chain of Responsibility Pattern)
- 职责链(chain of responsibility)模式
- 职责链模式(Chain of Responsibility Pattern)
- 职责链模式(Chain of Responsibility)
- Chain Of Responsibility 职责链模式
- Chain of Responsibility(职责链模式)
- 23.职责链模式--Chain of Responsibility
- 职责链(Chain of Responsibility)模式
- 职责链模式 Chain of Responsibility Pattern
- 职责链模式(Chain Of Responsibility)
- 职责链模式(Chain of Responsibility Pattern)
- 职责链模式(Chain of Responsibility)
- 职责链模式(Chain of Responsibility)
- Chain Of Responsibility(职责链)模式
- 职责链模式(Chain Of Responsibility)
- Chain of Responsibility 职责链模式
- 5.1 Chain of Responsibility职责链模式
- WPF中图形表示语法详解(Path之Data属性语法)
- PrintStream PrintWriter Sequence 文件分割 管道流
- 第三章 条件测试
- QMap
- 没有人能够随随便便成功
- Chain of Responsibility 职责链模式
- 长沙邀请赛E题解题报告
- 数码图片无损放大工具使用技巧
- HDU1864:最大报销额(01背包)
- hibernate学习笔记15--load懒加载
- 动态添加的控件(如TextView)如何居中?如何相对对齐?
- Vs2012 下基于Glut OpenGL开发环境建立
- C++变参函数和变参宏
- JAVA经典算法40题