设计模式——命令模式

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模式,客户端向服务器发送指令,服务器要根据约定的协议做出相应的回应。

相关推荐
Leo来编程1 天前
设计模式1-单例模式
单例模式·设计模式
危险库1 天前
单例模式:确保一个类只有一个实例【设计模式】
javascript·单例模式·设计模式
已读不回1431 天前
设计模式-策略模式
前端·算法·设计模式
饕餮争锋1 天前
设计模式笔记_行为型_访问者模式
笔记·设计模式·访问者模式
写bug写bug2 天前
你真的会用枚举吗
java·后端·设计模式
哆啦code梦2 天前
趣谈设计模式之策略模式-比特咖啡给你一杯满满的情绪价值,让您在数字世界里”畅饮“
设计模式·策略模式
华仔啊2 天前
别学23种了!Java项目中最常用的6个设计模式,附案例
java·后端·设计模式
Keya2 天前
MacOS端口被占用的解决方法
前端·后端·设计模式
已读不回1432 天前
设计模式-单例模式
前端·设计模式
long3163 天前
构建者设计模式 Builder
java·后端·学习·设计模式