命令模式----C++实现
来源:互联网 发布:直通车显示淘宝下架 编辑:程序博客网 时间:2024/06/07 02:21
命令模式
定义:
将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
适用性:
当有如下需求时,可以用命令模式:
1、 想抽象出待执行的动作以参数化某对象。命令模式是回调机制的一个面向对象的替代品。
2、 在不同的时刻指定,排列和执行请求。
3、 支持取消操作。
4、 支持修改日志。
5、 用构建在原语操作上的高层操作构造一个系统。
结构:
实现:
//命令接收者
class Receiver
{
public:
voiddoSomething()
{
cout<<"Receiver doSomething"<<endl;
}
};
//抽象的命令类
class Command
{
public:
virtual void Execute() {}
virtual ~Command(){}
};
//具体命令类
class ConcreteCommand1:public Command
{
public:
ConcreteCommand1(Receiver*pReceiver):m_pReceiver(pReceiver)
{ }
voidExecute()
{
cout<<"ConcreteCommand1 Execute"<<endl;
m_pReceiver->doSomething();
}
private:
Receiver *m_pReceiver;
};
class ConcreteCommand2:public Command
{
public:
ConcreteCommand2(Receiver*pReceiver):m_pReceiver(pReceiver)
{ }
voidExecute()
{
cout<<"ConcreteCommand2 Execute"<<endl;
m_pReceiver->doSomething();
}
private:
Receiver *m_pReceiver;
};
//调用者
class Invoker
{
public:
voidSetCommand(Command *pCommand)
{
m_pCommand = pCommand;
}
voidAction()
{
m_pCommand->Execute();
}
private:
Command *m_pCommand;
};
Invoker *pInvoker = new Invoker;
Receiver *pR = new Receiver;
Command *pCommand1 = new ConcreteCommand1(pR);
Command *pCommand2 = new ConcreteCommand2(pR);
pInvoker->SetCommand(pCommand1);
pInvoker->Action();
pInvoker->SetCommand(pCommand2);
pInvoker->Action();
- 设计模式 行为模式 命令模式 c语言 版本实现
- 【C++】Chapter19:命令模式
- Objective C--命令模式
- Objective C 命令模式
- Objective C--命令模式
- 命令模式(C++)
- 实现设计模式:命令模式
- 命令模式c++实现
- 命令模式c++实现
- C++实现命令模式
- C++实现命令模式
- 命令模式lua实现
- 命令模式----C++实现
- 命令模式c++实现
- 命令模式-c++实现
- 命令模式c++实现
- 命令模式-unity实现
- 命令模式(java实现)
- 最容易犯得错误
- 利用vs2005.net编写基于WinCE的DLL
- 谈互联网公司的公关技巧
- committing transaction
- WINCE下调试驱动的一般方法
- 命令模式----C++实现
- 备忘 target:IEventDispatcher (default = null)
- 睡觉前欣赏一下select函数的一个小程序
- WebKit阅读起步
- srand rand 函数
- MAC设置环境变量的文件
- kindle4.1.1越狱
- WINDOWS CE下ANSI 与 Unicode 字符相互转换
- cocos2dx Beta 使用动画