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; }
原文地址:https://www.cnblogs.com/qiangini/p/15580438.html