设计模式——命令模式

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

相关推荐
牛奶咖啡136 小时前
学习设计模式《十三》——迭代器模式
设计模式·迭代器模式·内部迭代器和外部迭代器·带迭代策略的迭代器·双向迭代器·迭代器模式的优点·何时选用迭代器模式
哆啦A梦的口袋呀6 小时前
设计模式汇总
python·设计模式
在未来等你9 小时前
设计模式精讲 Day 1:单例模式(Singleton Pattern)
java·设计模式·面向对象·软件架构
不会编程的小江江9 小时前
【设计模式】单例模式
单例模式·设计模式
哆啦A梦的口袋呀15 小时前
基于Python学习《Head First设计模式》第十一章 代理模式
学习·设计模式·代理模式
Dave_Young16 小时前
上位机开发中的设计模式(3):装饰器模式
设计模式·装饰器模式
缘友一世18 小时前
java设计模式[2]之创建型模式
java·开发语言·设计模式
秋田君1 天前
深入理解JavaScript设计模式之策略模式
javascript·设计模式·策略模式
不会编程的小江江1 天前
【设计模式】UML类图与工厂模式
c++·设计模式
lpfasd1231 天前
备忘录模式(Memento Pattern)
java·设计模式·备忘录模式