#include<iostream>
#include<string.h>
using namespace std;
class Bank {
public:
void service(string name) {
cout << "银行服务 " << name <<endl;
}
};
class Command {
public:
Bank* bank_;
Command(Bank *bank) : bank_(bank) {}
virtual void excute() = 0;
};
class Card : public Command {
public:
Card(Bank *bank) : Command(bank){}
virtual void excute() override {
bank_->service("办卡");
}
};
class Money : public Command {
public:
Money(Bank* bank) : Command(bank){}
virtual void excute() override {
bank_->service("取钱");
}
};
class Save : public Command {
public:
Save(Bank* bank) : Command(bank) {}
virtual void excute() override {
bank_->service("存钱");
}
};
class Banker {
public:
Command* cmd_;
void ReceiveCmd(Command* cmd) {
cmd_ = cmd;
}
void Deal() {
cmd_->excute();
}
};
int main() {
Bank *bank = new Bank;
Banker *banker = new Banker;
Command *card = new Card(bank);
Command *money = new Money(bank);
Command *save = new Save(bank);
banker -> ReceiveCmd(card);
banker -> Deal();
banker -> ReceiveCmd(money);
banker -> Deal();
banker -> ReceiveCmd(save);
banker -> Deal();
return 0;
}