设计模式——命令模式

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

相关推荐
佛祖让我来巡山1 天前
【面试题】什么是观察者模式?一般用在什么场景?
观察者模式·设计模式
Yu_Lijing1 天前
基于C++的《Head First设计模式》笔记——适配器模式
c++·笔记·设计模式
点云SLAM1 天前
C++ 设计模式之工厂模式(Factory)和面试问题
开发语言·c++·设计模式·面试·c++11·工厂模式
红头辣椒1 天前
AI赋能全流程,重塑需求管理新生态——Visual RM需求数智化平台核心能力解析
人工智能·设计模式·软件工程·需求分析·用户运营
魅影骑士00102 天前
柯里化函数
后端·设计模式
BHXDML2 天前
Java 设计模式详解
java·开发语言·设计模式
Engineer邓祥浩2 天前
设计模式学习(12) 23-10 外观模式
学习·设计模式·外观模式
Geoking.2 天前
【设计模式】享元模式(Flyweight)详解:用共享对象对抗内存爆炸
java·设计模式·享元模式
callJJ2 天前
Spring设计模式与依赖注入详解
java·spring·设计模式·idea·工厂模式
sxlishaobin2 天前
设计模式之组合模式
设计模式·组合模式