`

职责链模式(Responsibility)

 
阅读更多
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止




#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);
}

老板同意请假
  • 大小: 16.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics