zoukankan      html  css  js  c++  java
  • [设计模式]<6>. C++与职责链模式(chain of rsponsibility pattern)

    默默地EEer,原文地址:

    http://www.cnblogs.com/hebaichuanyeah/p/5625233.html

    职责链模式指使多个对象多有机会处理请求,避免请求发送者和接受者的耦合关系。

    将这些接受处理的对象连成一条链,并沿着该链处理请求。

    一个传说中的应用情景:

    假如去政府部门办事,遇到了打字员小丽,在打LOL的小张以及主任老李,互相踢皮球推脱。

    #include <iostream>
    using namespace std;
    
    class Handler
    {
    protected:
        string name;
        Handler * successor;
    public:
    
        Handler(){}
        virtual ~Handler(){}
        void setSuccessor(Handler * successor)
        {
            this->successor = successor;
        }
        string getName()
        {
            return name;
        }
        virtual void HandleRequest(string str)
        {
    
        }
    };
    //传说中的政府部分踢球皮球人员
    class FootballPlayer : public Handler
    {
    public:
        FootballPlayer(string name)
        {
            this->name = name;
        }
        virtual void HandleRequest(string str)
        {
            if(name == str)
            {
                cout<<this->name<<": 办理事务.."<<endl;
            }
            else if(successor != NULL)
            {
                cout<<this->name<<":  这个不归我管,你去找"<<successor->getName()<<endl;
                successor->HandleRequest(str);
            }
            else
            {
                cout<<this->name<<":  这个办不了啦"<<endl;
            }
        }
    };
    
    main()
    {
        Handler * xiaoli = new FootballPlayer("打字员小丽");
        Handler * xiaozhang = new FootballPlayer("在打lol的小张");
        Handler * laoli = new FootballPlayer("主任老李");
        //小丽把皮球踢给小张
        xiaoli->setSuccessor(xiaozhang);
        xiaozhang->setSuccessor(laoli);
        laoli->setSuccessor(NULL);
    
        xiaoli->HandleRequest("办个事");
    }
    

     

  • 相关阅读:
    40. Combination Sum II
    39. Combination Sum
    找一找
    37. Sudoku Solver
    Activiti 多个并发子流程的应用
    BPMN2新规范与Activiti5
    BPMN这点事-BPMN扩展元素
    JAVA规则引擎 -- Drools
    工作流Activiti5流程变量 任务变量 setVariables 跟 setVariablesLocal区别
    activiti 学习( 三 ) 之 流程启动者
  • 原文地址:https://www.cnblogs.com/hebaichuanyeah/p/5625233.html
Copyright © 2011-2022 走看看