Command
#include <iostream> using namespace std;
#define DESTROY_POINTER(ptr) if (ptr) { delete ptr; ptr = NULL; } class Receiver
{
public:
void Action1() { cout<<"Receiver::Action1"<<endl; }
void Action2() { cout<<"Receiver::Action2"<<endl; }
void Action3() { cout<<"Receiver::Action3"<<endl; }
}; class Command
{
public:
Command(Receiver* pReceiver) { m_pReceiver = pReceiver; }
virtual ~Command() { DESTROY_POINTER(m_pReceiver); } virtual void Execute()=; protected:
Receiver* m_pReceiver;
}; class ConcreteCommandA : public Command
{
public:
ConcreteCommandA(Receiver* pReceiver) : Command(pReceiver) {} virtual void Execute() { m_pReceiver->Action1(); }
}; class ConcreteCommandB : public Command
{
public:
ConcreteCommandB(Receiver* pReceiver) : Command(pReceiver) {}
virtual void Execute() { m_pReceiver->Action2(); }
}; class ConcreteCommandC : public Command
{
public:
ConcreteCommandC(Receiver* pReceiver) : Command(pReceiver) {}
virtual void Execute() { m_pReceiver->Action3(); }
}; class Invoker
{
public:
Invoker(Command* pCommand) { m_pCommand = pCommand; }
~Invoker() { DESTROY_POINTER(m_pCommand); } void Request() { m_pCommand->Execute(); } private:
Command* m_pCommand;
}; int main(int argc, char *argv[])
{
Receiver* pReceiver = new Receiver; Invoker invoker1(new ConcreteCommandA(pReceiver));
invoker1.Request(); Invoker invoker2(new ConcreteCommandB(pReceiver));
invoker2.Request(); Invoker invoker3(new ConcreteCommandC(pReceiver));
invoker3.Request(); return ;
}
Command的更多相关文章
- ifconfig: command not found(CentOS专版,其他的可以参考)
ifconfig: command not found 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) echo $PATH 解决方案1:先看看是不是 ...
- scp报错 -bash: scp: command not found
环境:RHEL6.5 使用scp命令报错: [root@oradb23 media]# scp /etc/hosts oradb24:/etc/ -bash: scp: command not fou ...
- ENode框架单台机器在处理Command时的设计思路
设计目标 尽量快的处理命令和事件,保证吞吐量: 处理完一个命令后不需要等待命令产生的事件持久化完成就能处理下一个命令,从而保证领域内的业务逻辑处理不依赖于持久化IO,实现真正的in-memory: 保 ...
- 设计模式(六):控制台中的“命令模式”(Command Pattern)
今天的博客中就来系统的整理一下“命令模式”.说到命令模式,我就想起了控制台(Console)中的命令.无论是Windows操作系统(cmd.exe)还是Linux操作系统(命令行式shell(Comm ...
- GET command找不到
谷歌的: On running a cronjob with get command, I was getting the following error. /bin/sh: GET: command ...
- source /etc/profile报错-bash: id:command is not found
由于误操作导致 source /etc/profile 报错 -bash: id:command is not found 此时,linux下很多命令到不能能用,包括vi ls 等... 可以使用 e ...
- Webform(七)——内置对象(Session、Application)和Repeater的Command操作
内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. 一.内置对象 (一)Session 跟Cookies一样用来存储用户数据 1.Session.Cookies对比 ...
- MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL
MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL 是因为目标板的芯片处于休眠 ...
- mac 修改command+q 退出
实在受不了! 在chrome中command+w 是关闭当前页面,command+q 退出浏览器: 经常查阅资料打开了N多个窗口,关闭时不小心将command+q当command+w按: so ... ...
- Ubuntu中配置Java环境变量时,出现command not found问题解决记录
百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile, ...
随机推荐
- 鼎信通达gsm网关和asterisk对接的调试
设备型号:4gsm卡,型号是DWG2000C-4Egsm网关IP地址: 10.3.6.250asteriskIP地址: 10.3.6.251 1)首先在asterisk里面添加到gsm网关的中继,并做 ...
- oracle中统计重复几次的数据有几条
源地址:http://zhidao.baidu.com/link?url=ZgCztNzCScRI5kAqGqug1LJvf7IX311EQs6fJ0-W1kOtWaaR7MrtLoV_228Ed8F ...
- Dubbo 应用容器
Dubbo的容器模块,是一个独立的容器,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务. 服务容器只是一个简单的Main方法,并加载一个简单的Spring容 ...
- gomobile 真机 log 打出的日志跟踪
go mobile 开发的应用,真机调试时,我们期望看到log包打出的日志, 这时候就需要借用 Android Device Monitor 了. 我们的 go 代码中用最简单的 log.Printl ...
- Ext 项目随笔
region: This region's layout position (north, south, east, west or center). Read-only. collapsible:t ...
- Arcgis9.3下栅格数据的坐标转换出错
Arcgis9.3下栅格数据的坐标转换出错 在win7系统下的arcgis9.3,使用toolbox里raster project工具总是出错,后来打了sp1补丁就没问题了,想不到arcgis还有这样 ...
- sap mm_1
1. /nmm50 扩展视图,看那些视图没有维护的 . 2. mm60 物料清单 查看所建立的物料. 3. se11 ABAP DICTIONARY:Initial Screen 定义 ...
- SQLServer 索引以及视图
业务 主键: 索引: 锁: ========================================= 一个页分为 页头 页体--存储行 页尾 页是有固定大小的,但是数据不一定存满,有可能产生 ...
- centos6.5网络配置问题:ping不通
遇到的问题:win7网卡ping不通 win7中的VMnet8信息 centos6.5设置: /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ...
- sqlserver 常用sql语句
SELECT COUNT(*) FROM WeixinUser SELECT COUNT(*) FROM WeixinUser WHERE datediff(day, CreateTime,getda ...