责任链模式
2014-09-04 19:57
169 查看
【1】什么是责任链模式?
责任链模式:
【2】责任链模式的代码示例:
代码示例:
View Code
Good Good Study, Day Day Up.
顺序 选择 循环 总结
责任链模式:
【2】责任链模式的代码示例:
代码示例:
#include<iostream> #include<string> using namespace std; class Request { public: string requestType; string requestContent; int number; }; class Manager { protected: string name; Manager *superior; public: Manager(string name) { this->name = name; } void setSuperior(Manager *superior) { this->superior = superior; } virtual void requestApplications(Request *request) = 0; }; class CommonManager : public Manager { public: CommonManager(string name) : Manager(name) {} void requestApplications(Request *request) { if (request->requestType == "请假" && request->number <= 2) { cout << name << " " << request->requestContent << " 请假天数: " << request->number << " 被批准" << endl; } else { if (superior != NULL) { superior->requestApplications(request); } } } }; class Majordomo : public Manager { public: Majordomo(string name) : Manager(name) {} void requestApplications(Request *request) { if (request->requestType == "请假" && request->number <= 5) { cout << name << " " << request->requestContent << " 请假天数: " << request->number << " 被批准" << endl; } else { if (superior != NULL) { superior->requestApplications(request); } } } }; class GeneralManager : public Manager { public: GeneralManager(string name) : Manager(name) {} void requestApplications(Request *request) { if (request->requestType == "请假") { cout << name << " " << request->requestContent << " 请假天数: " << request->number << " 被批准" << endl; } } }; int main() { CommonManager *jingli = new CommonManager("经理"); Majordomo *zongjian = new Majordomo("总监"); GeneralManager *zongjingli = new GeneralManager("总经理"); jingli->setSuperior(zongjian); zongjian->setSuperior(zongjingli); Request *request = new Request(); request->requestType = "请假"; request->requestContent = "李俊宏请假"; request->number = 1; jingli->requestApplications(request); request->requestType = "请假"; request->requestContent = "李俊宏请假"; request->number = 4; jingli->requestApplications(request); request->requestType = "请假"; request->requestContent = "李俊宏请假"; request->number = 10; jingli->requestApplications(request); return 0; } //Result: /* 经理 李俊宏请假 请假天数: 1 被批准 总监 李俊宏请假 请假天数: 4 被批准 总经理 李俊宏请假 请假天数: 10 被批准 */
View Code
Good Good Study, Day Day Up.
顺序 选择 循环 总结
相关文章推荐
- 《JAVA与模式》之责任链模式
- 责任链模式 - 行为模式
- 《Java设计模式》之责任链模式
- 设计模式6--责任链模式(The chain of responsibility pattern)
- 设计模式之责任链模式
- 责任链模式实例
- 图形学优化_3: 责任链模式和迭代器模式
- 每天一个设计模式: 责任链模式(Chain Of Responsibility)
- 责任链模式
- Java设计模式之责任链模式
- 利用责任链模式模拟加薪请求 C++
- 责任链模式
- 设计模式:10)责任链模式
- 设计模式学习--责任链模式
- 责任链模式
- 设计模式之责任链模式
- 设计模式之责任链模式
- 责任链模式
- 责任链模式-对象行为型
- 责任链模式(Chain of Responsibility)