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("办个事");
    }
    

     

  • 相关阅读:
    物联网和互联网到底有什么区别和联系呢?
    JAVA流程控制
    JAVA运算符
    JAVA中的变量及取值范围
    CSS position 属性
    web中的HTML CSS
    css选择器
    LAST_INSERT_ID
    [方法] 如何做产品规划
    [方法]需求挖掘采集的方法
  • 原文地址:https://www.cnblogs.com/hebaichuanyeah/p/5625233.html
Copyright © 2011-2022 走看看