设计模式 原码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值