设计模式学习(十六):职责链模式
2015-04-12 15:57
281 查看
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。
代码
使用
结果
代码
#include <iostream> #include <string> using namespace std; class Boss{ protected: string name; Boss *boss; public: Boss(Boss *b,string str):boss(b),name(str){} virtual void passRequest(int money) = 0; }; class PM:public Boss { public: PM(Boss *b,string str):Boss(b,str){} void passRequest(int money) { if (money < 500) { cout<<"PM:"<<name<<" passed"<<endl; } else { cout<<"PM:"<<name<<" cannt passed"<<endl; boss->passRequest(money); } } }; class HR:public Boss { public: HR(Boss *b,string str):Boss(b,str){} void passRequest(int money) { if (money < 1000) { cout<<"HR:"<<name<<" passed"<<endl; } else { cout<<"HR:"<<name<<" cannt passed"<<endl; boss->passRequest(money); } } }; class Manager:public Boss { public: Manager(Boss *b,string str):Boss(b,str){} void passRequest(int money) { cout<<"Manager:"<<name<<" passed"<<endl; } };
使用
int main(){ string str("Manager"); Boss *b = new Manager(NULL,str); str = "HR"; Boss *hr = new HR(b,str); str = "PM"; Boss *pm = new PM(hr,str); pm->passRequest(5000); //处理加薪5000请求 return 1; }
结果
PM:PM cannt passed HR:HR cannt passed Manager:Manager passed
相关文章推荐
- 设计模式学习笔记十六——Interpreter模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 设计模式学习笔记(十六)—Proxy模式
- 步步为营 .NET 设计模式学习笔记 十六、Facade(外观模式)
- 五 单一职责、开放—封闭、依赖倒转原则——设计模式学习笔记
- 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)
- 步步为营 .NET 设计模式学习笔记 十六、Facade(外观模式)
- 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)
- 设计模式学习之GRASP通用职责分配软件模式
- 设计模式学习笔记十六:代理模式(Proxy Pattern)
- 设计模式学习-行为模式-职责链模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式学习笔记(十五)——Chain Of Responsibility职责链
- 设计模式学习笔记(十九)—Chain of Responsibility职责链模式
- 设计模式学习笔记三【单一职责原则】
- 设计模式学习之路——Chain Of Responsibility 职责链模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式学习笔记-职责链模式