#include <stdio.h>
#include <iostream>
using namespace std;
// 圣旨类(Command类)
class Command{
public:
Command(){}
virtual ~Command() { }
// 统一的函数接口
virtual void Execute() = 0;
};
// 士兵(圣旨的接收者)
class Receiver
{
public:
Receiver(char *pszName)
{
strcpy(szName, pszName);
}
~Receiver(){}
void Action()
{
cout << szName << "领旨!" << endl;
}
// 每个士兵有一个名字
private:
char szName[20];
};
// 具体的圣旨1——抓贼
class ZhuaZeiCommand: public Command{
public:
ZhuaZeiCommand(Receiver *r) : _recver(r)
{}
virtual void Execute()
{
cout << "谁领抓贼圣旨?" << endl; _recver->Action();
}
private:
Receiver *_recver;
};
// 具体的圣旨2——送钱// 哪来什么送钱的圣旨?我晕
class SongQianCommand: public Command
{
public:
SongQianCommand(Receiver *r) : _recver(r)
{}
virtual void Execute()
{
cout << "谁领送钱圣旨?" << endl; _recver->Action();
}
private:
Receiver *_recver;
};
// 皇帝类
class Invoker
{
public:
Invoker(Command *c) : _cmd(c)
{ }
void Invoke()
{
_cmd->Execute();
}
private:
Command *_cmd;
};
// 这个main函数就是应用,我一般把main函数看作是上帝的剧本
// 不是吗?你想要的一切都可以由你来创造,呵呵
void main()
{
// 有两个士兵
Receiver r1("一雨田");
Receiver r2("邓一雷");
// 两道圣旨,一道是抓贼的,一道是送钱的
// 抓贼的给一雨田
ZhuaZeiCommand zc(&r1);
// 送钱的给邓一雷
SongQianCommand sc(&r2);
// 有一个皇帝,要下圣旨了
// 第一道,下的是抓贼圣旨
Invoker I1(&zc);
// 第二道,下的是送钱圣旨
Invoker I2(&sc);
// 圣旨的执行
I1.Invoke();
I2.Invoke();
}