成員函式指標,C++模板 和command設計模式結合實現的一種命令處理方式
阿新 • • 發佈:2019-01-29
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();
}
}