#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;
}
#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;
}