#include <iostream> using namespace std; class Member{ public: void setRequestLeaveDay(int day){ mRequestLeaveDay = day; } int getRequestLeaveDay(){ return mRequestLeaveDay; } private: int mRequestLeaveDay; }; class Handler{ public: virtual void handleLeave(Member* m)=0; }; class Boss:public Handler { public: void handleLeave(Member* m){ if(m->getRequestLeaveDay()<10){ cout << "老板同意请假" << endl; } } }; class ProjectManager:public Handler { public: ProjectManager(Handler* nextHandler){ mNextHandler = nextHandler; } void handleLeave(Member *m){ if(m->getRequestLeaveDay()<=3){ cout << "项目经理同意请假" << endl; }else{ mNextHandler->handleLeave(m); } } private: Handler* mNextHandler; }; class TeamLeader:public Handler { public: TeamLeader(Handler* nextHandler){ mNextHandler = nextHandler; } void handleLeave(Member *m){ if(m->getRequestLeaveDay()<=1){ cout << "小组长同意请假" << endl; }else{ mNextHandler->handleLeave(m); } } private: Handler* mNextHandler; }; int main() { Boss *boss = new Boss; ProjectManager *projectManager = new ProjectManager(boss); TeamLeader *teamLeader = new TeamLeader(projectManager); Member *m = new Member; m->setRequestLeaveDay(4); teamLeader->handleLeave(m); } 老板同意请假
职责链模式(Responsibility)
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
猜你喜欢
转载自xiangjie88.iteye.com/blog/2098828
今日推荐
周排行