cpp
class Handle
{
public:
void way1()
{
cout << "way1" << endl;
}
void way2()
{
cout << "way2" << endl;
}
void way3()
{
cout << "way3" << endl;
}
};
class command
{
public:
virtual void handle() = 0;
};
// 把way1封装成一个请求
class Way1 :public command
{
public:
Way1(Handle* h) :_h(h) {};
virtual void handle()
{
_h->way1();
}
Handle* _h;
};
class Way2 :public command
{
public:
Way2(Handle* h) :_h(h) {};
virtual void handle()
{
_h->way2();
}
Handle* _h;
};
class Way3 :public command
{
public:
Way3(Handle* h) :_h(h) {};
virtual void handle()
{
_h->way3();
}
Handle* _h;
};
class service
{
public:
void addway(command* command)
{
mCommand.push(command);
}
void start()
{
while (!mCommand.empty())
{
Sleep(200);
command* c = mCommand.front();
c->handle();
mCommand.pop();
}
}
queue<command*> mCommand;
};
void test()
{
Handle* h = new Handle;
command* m1 = new Way1(h);
command* m2 = new Way2(h);
command* m3 = new Way3(h);
service* ser = new service;
ser->addway(m1);
ser->addway(m2);
ser->addway(m3);
ser->start();
}
int main()
{
test();
return 0;
}
这个设计模式有点类似C/S模式,客户端向服务器发送指令,服务器要根据约定的协议做出相应的回应。