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

     

  • 相关阅读:
    C语言二维数组
    Foxyproxy 火狐代理插件
    Midas Civil的钢束生成器
    foobar2000 – ELPlaylist
    Foobar2000-CUI 小结
    Foobar2000–panel stack splitter
    Foobar2000 使用说明
    foobar2000-new
    书匠
    图片转文字 ocr 汉王
  • 原文地址:https://www.cnblogs.com/hebaichuanyeah/p/5625233.html
Copyright © 2011-2022 走看看