zoukankan      html  css  js  c++  java
  • 2021/11/23

    责任链
    #include <iostream> #include <vector> using namespace std; class relatives { public: relatives(){} virtual ~relatives(){} virtual bool request(int)=0; }; class Manage1 : public relatives { public: Manage1(){} virtual ~Manage1(){} bool request(int num) { if (num<10000) { cout<<num<<"元订单主任给批准"<<endl; return true; } else { cout<<num<<"元订单主任不给批准,找部门经理"<<endl; return false; } } }; class Manage2 : public relatives { public: Manage2(){} virtual ~Manage2(){} bool request(int num) { if (num<50000) { cout<<num<<"元订单部门经理给批准"<<endl; return true; } else { cout<<num<<"元订单部门经理不给批准,找副总经理"<<endl; return false; } } }; class Manage3 : public relatives { public: Manage3(){} virtual ~Manage3(){} bool request(int num) { if (num<100000) { cout<<num<<"元副总经理给批准"<<endl; return true; } else { cout<<num<<"元订单副总经理不给批准,找总经理"<<endl; return false; } } }; class Manage4 : public relatives { public: Manage4(){} virtual ~Manage4(){} bool request(int num) { if (num<200000) { cout<<num<<"元总经理给批准"<<endl; return true; } else { cout<<num<<"金额太大批不了"<<endl; return false; } } }; class buysomething { private: vector<relatives*> p_vbuy; public: buysomething() { p_vbuy.push_back(new Manage1); p_vbuy.push_back(new Manage2); p_vbuy.push_back(new Manage3); p_vbuy.push_back(new Manage4); } virtual ~buysomething() { p_vbuy.clear(); } void request(int num) { bool flag=false; for (vector<relatives*>::iterator it=p_vbuy.begin();it!=p_vbuy.end();it++) { flag=(*it)->request(num); if (flag==true) break; } } }; int main() { buysomething *buy=new buysomething; buy->request(260000); delete buy; system("pause"); return 0; }
  • 相关阅读:
    结构体比较
    不定长参数列表用法
    接口
    字符串数据类型
    *和**的打包和解包
    python类常用装饰器
    继承的实现
    map用法
    包的导入和init函数
    协程
  • 原文地址:https://www.cnblogs.com/qiangini/p/15580438.html
Copyright © 2011-2022 走看看