成员函数指针,C++模板 和command设计模式结合实现的一种命令处理方式
来源:互联网 发布:大数据平台架构图深度 编辑:程序博客网 时间:2024/06/03 22:33
#include<iostream>
#include<vector>
using namespace std;
#include<vector>
using namespace std;
// 先定义一个Command的基类
class Command
{
public:
virtual ~Command()
{
}
virtual void Execute() = 0;
protected:
Command()
{
}
};
// 为了能执行多个类的符合某个函数声明的成员函数,这里有个二个变化的点,一个是哪个类? 这个成员函数的函数原型是什么样的。
class Command
{
public:
virtual ~Command()
{
}
virtual void Execute() = 0;
protected:
Command()
{
}
};
// 为了能执行多个类的符合某个函数声明的成员函数,这里有个二个变化的点,一个是哪个类? 这个成员函数的函数原型是什么样的。
// 可以分别用模板和成员函数指针来实现。特定类型的对象,以及该对象的成员函数可以一起构造一个Command
template<class Receiver>
class SimpleCommand : public Command
{
public:
typedef void (Receiver::*Action)();
SimpleCommand(Receiver* r, Action a) : _receiver(r),_action(a)
{
}
virtual void Execute()
{
(_receiver->*_action)();
}
private:
Action _action;
Receiver* _receiver;
};
class MyClass
{
public:
void redo()
{
cout << "in myclass" << endl;
}
};
class YourClass
{
public:
void check()
{
cout << "check your class" << endl;
}
};
int main(int argc, char** argv)
{
MyClass* receiver = new MyClass;
Command* aCommand = new SimpleCommand<MyClass>(receiver,&MyClass::redo);
YourClass* youReceiver = new YourClass;
Command* yCommand = new SimpleCommand<YourClass>(youReceiver,&YourClass::check);
vector<Command*> commandQueue;
commandQueue.push_back(aCommand);
commandQueue.push_back(yCommand);
for(int i = 0 ; i < commandQueue.size(); i++)
{
commandQueue[i]->Execute();
}
}
0 0
- 成员函数指针,C++模板 和command设计模式结合实现的一种命令处理方式
- 使用类成员函数指针调用C++成员函数的一种方式
- 略说成员函数指针及其模板的精简实现
- 实现command模式中涉及到的虚函数、模板和其他
- 常见设计模式的解析和实现(C++)之十四-Command模式
- 常见设计模式的解析和实现(C++)之十四-Command模式
- 常见设计模式的解析和实现(C++)之十四-Command模式
- 【C++】单例模式的一种简单实现的模板
- Redis存储Key的一种设计实现方式:模式匹配
- 一种实现Win32消息处理处理函数的新方法 - 基于Thunk实现的类成员消息处理函数
- 一种实现Win32消息处理处理函数的新方法 - 基于Thunk实现的类成员消息处理函数 .
- 一种实现Win32消息处理处理函数的新方法 - 基于Thunk实现的类成员消息处理函数
- Command(命令)设计模式
- 类成员函数指针的使用方式
- 成员函数指针的使用方式
- 一种智能指针的实现方式
- C++类成员函数指针和一般函数指针的编译模式的差别
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
- jQuery $.post提交与C#后台交互
- iOS tableview cell 去除点击效果 和 选择效果
- Hibernate环境测试
- 第4讲 项目一 长方形周长与面积
- 【学习笔记】UILabel
- 成员函数指针,C++模板 和command设计模式结合实现的一种命令处理方式
- JavaScript面向对象编程-封装
- 怎么打包为ipa格式的软件包以及怎么安装到手机终端上。 (我的开发环境为Xcode6.1.1 )
- Hibernate中Query.list()和Query.iterator()的区别
- ASP.NET MVC Jquery Validate 表单验证的多种方式介绍
- C++使用Unicode字符集时配置文件读写
- AJAX初识小结
- dubbo 用户指南
- 随笔-IOS沙盒 操作