命令模式

#include <iostream>
#include <string>
//#include <afx.h>
#include <vector>
#include <list>
using namespace std;


class Barbecuer
{
public:
void BakeButton()
{
cout<<"烤羊肉串\n";
}


void BakeChickenWing()
{
cout<<"烤鸡翅\n";
}
};


class Command
{
protected:
Barbecuer *receiver;
public:
Command(Barbecuer *receiver)
{
this->receiver = receiver;
}
virtual void ExcuteCommand(){};
};


class BakeMuttonCommand:public Command
{
public:
BakeMuttonCommand(Barbecuer *receiver):Command(receiver){};


virtual void ExcuteCommand()
{
receiver->BakeButton();
}
};


class BakeChickenWingCommand:public Command
{
public:
BakeChickenWingCommand(Barbecuer *receiver):Command(receiver){};


virtual void ExcuteCommand()
{
receiver->BakeChickenWing();
}
};


class Waiter
{
list<Command *>CI;
list<Command *>::iterator i;
public:
void SetOrder(Command *command)
{
CI.push_back(command);
}


void Notify()
{
for (i = CI.begin(); i != CI.end(); ++i) 
(*i)->ExcuteCommand();
}
};


int main()
{
Barbecuer man;
BakeMuttonCommand muttoncommand1(&man);
BakeMuttonCommand muttoncommand2(&man);
BakeChickenWingCommand chickenwingcommand1(&man);


Waiter girl;
girl.SetOrder(&muttoncommand1);
girl.SetOrder(&muttoncommand2);
girl.SetOrder(&chickenwingcommand1);


girl.Notify();


cout<<"\nOK\n";
return 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值