命令模式:将一个请求封装为一个对象,从而使你可用不同请求。对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。优点就是把一个请求操作的对象,和一个知道怎么一个操作的对象分隔开,不再是紧耦合。敏捷开发原则,不要为代码添加基于猜测的,实际不需要的功能。这也是编程中很重要的一个原则——KISS原则。
#pragma once
#include <stdio.h>
#include <list>
using std::list;
//最终处理命令者
class Barbecuer
{
public:
void bakemutton()
{
printf("烤肉串\n");
}
void bakechickenwing()
{
printf("烤鸡翅\n");
}
};
//命令类系
class Command
{
public:
Command(Barbecuer& cur)
{
this->m_cur = cur;
}
virtual void excutecommand(){ }
protected:
Barbecuer m_cur;
};
class BakeChickenWingCommand :public Command
{
public:
BakeChickenWingCommand(Barbecuer &cur) :Command(cur)
{
}
virtual void excutecommand()
{
m_cur.bakechickenwing();
}
};
class BakeMuttonCommand :public Command
{
public:
BakeMuttonCommand(Barbecuer &cur) :C