• [设计模式]<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写入文本文件
    oracle误删数据闪回
    Myeclipese :Creation of element failed解决方法
    Hibernate的四种状态
    java中list、set和map 的区别<转>
    C#操作mysql中临时表不自动删除
    WPF 实现地图的移动和滚动放大
    c# 将十六进制字符串写入注册表
    ASP.NET 视图状态概述:初步了解
    vs好用插件
  • 原文地址:https://www.cnblogs.com/hebaichuanyeah/p/5625233.html
Copyright © 2020-2023  润新知