C++代码:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<queue>
#include<Windows.h>
using namespace std;
class HandlerClientProtocol {
public :
void addMoney() {
cout<<"给玩家充钱"<<endl;
}
void addEquid() {
cout<<"给玩家增加装备"<<endl;
}
};
class AbstractCommand {
public :
virtual void handle() = 0;
};
class AddMoney : public AbstractCommand {
private :
HandlerClientProtocol* protocol;
public :
void setHandlerClientProtocol(HandlerClientProtocol* protocol) {
this->protocol = protocol;
}
virtual void handle() {
this->protocol->addMoney();
}
};
class AddEquid :public AbstractCommand {
private:
HandlerClientProtocol* protocol;
public:
void setHandlerClientProtocol(HandlerClientProtocol* protocol) {
this->protocol = protocol;
}
virtual void handle() {
this->protocol->addEquid();
}
};
class Server {
private :
queue<AbstractCommand* > mCommands;
public :
void addRequest(AbstractCommand * command) {
mCommands.push(command);
}
void startHandler() {
while (!mCommands.empty()) {
Sleep(2000);
AbstractCommand* command = mCommands.front();
command->handle();
mCommands.pop();
}
}
};
void test() {
Server s;
HandlerClientProtocol *h = new HandlerClientProtocol();
AddMoney* addmoney = new AddMoney();
addmoney->setHandlerClientProtocol(h);
s.addRequest(addmoney);
s.addRequest(addmoney);
s.addRequest(addmoney);
s.addRequest(addmoney);
s.startHandler();
}
int main() {
test();
return 0;
}