设计模式之命令模式
来源:互联网 发布:c语言编程实例 编辑:程序博客网 时间:2024/06/04 07:16
四个角色:
Receiver:命令最终传到这里,执行命令的,但可以执行多种命令
Command:拥有Receiver的指针,通过需要执行某种命令
Invoker:记录和触发命令
Client:应用
/*Command pattern*/
/* Author hugewave*/#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
class CReceiver
{
public:
void funcone()
{
cout<<"Do funcOne!"<<endl;
};
void functwo()
{
cout<<"Do funcTwo!"<<endl;
};
};
class CCommand
{
protected:
CReceiver* p_rec;
public:
CCommand(CReceiver* rec):p_rec(rec)
{
};
public:
virtual void Do()=0;
};
class CConcreteCommandOne:public CCommand
{
public:
CConcreteCommandOne(CReceiver* rec):CCommand(rec)
{
};
public:
void Do()
{
p_rec->funcone();
};
};
class CConcreteCommandTwo:public CCommand
{
public:
CConcreteCommandTwo(CReceiver* rec):CCommand(rec)
{
};
public:
void Do()
{
p_rec->functwo();
};
};
class CInvoker
{
private:
vector<CCommand*> cmdlist;
public:
void AddCmd(CCommand* cmd)
{
cmdlist.push_back(cmd);
}
void ExcuteCmd()
{
vector<CCommand*>::iterator it;
for(it=cmdlist.begin();it!=cmdlist.end();++it)
{
(*it)->Do();
}
}
};
int main()
{
//client
CReceiver * p_rec=new CReceiver();
CInvoker* p_invoker=new CInvoker();
CCommand* cmd1=new CConcreteCommandOne(p_rec);
CCommand* cmd2=new CConcreteCommandTwo(p_rec);
p_invoker->AddCmd(cmd1);
p_invoker->AddCmd(cmd2);
p_invoker->ExcuteCmd();
return 1;
}
0 0
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之--命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之--命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之命令模式
- 设计模式之 命令模式
- POJ-1247
- 如何用Python来进行查询和替换一个文本字符串
- ACM暑期计划——第四天
- 使用xml.etree.ElementTree遍历xml所有节点
- CAS学习笔记(一)
- 设计模式之命令模式
- libGDX项目创建与运行
- iOS开发中,关于什么时候使用点语法的解答
- Activity的生命周期函数
- HTTP返回状态码说明
- Linux学习日志之Linux之命令基本格式及文件处理命令
- 自定义jquery ui日历
- secondarynamenode无法启动
- StringBuilder 以及 StringBuffer默认大小与扩容