设计模式——命令模式

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

相关推荐
墨子夕19 分钟前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(前言篇)
java·开发语言·设计模式
墨子夕3 小时前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(第一篇)
java·python·设计模式
General_G4 小时前
创建型模式—原型(Prototype)模式
c++·设计模式·原型模式
geovindu7 小时前
rust: Template Method Pattern
开发语言·后端·设计模式·rust·行为模式·模板方法模
geovindu8 小时前
rust: Template Method Pattern(续)
开发语言·后端·设计模式·rust·行为模式·板方法模式
博风9 小时前
17、设计模式应用举例:单件模式:多线程争冠军
设计模式
高晶1 天前
无乘法器实现LC二阶滤波器:基于移位运算的快速算法与四种精度推导
算法·设计模式·程序员
高晶1 天前
主从自动分配算法:平均值乘以设备数一半的选举基准值解析
算法·设计模式·程序员
延晗1 天前
【从零开始 DeepSeek Harness 插件开发教程】二、一切皆插件:简单理解一下 Cordis 内核与 DSH 心智模型
设计模式·deepseek
高晶1 天前
Android 通讯录应用开发实战:从零搭建 SQLite 数据持久化完整项目
android·设计模式·前端框架