Skip to content

庄朋龙的博客

有志者自有千方万计,无志者只感千难万难。

Menu
  • 首页
  • 生活
  • 创业
  • 编程
  • 运维
  • 视频课程
    • 跨境独立站
    • Shopee跨境电商
    • TEMU跨境电商
  • 资源分享
    • 网站推荐
    • 开源推荐
    • 可商用字体
    • 书籍分享
Menu

C++设计模式_命令模式练习代码

Posted on 2015年11月7日2025年3月4日 by 庄朋龙

C++设计模式_命令模式练习代码,自己写的简单的一个代码,留着以后备忘。

#define  _CRT_SECURE_NO_WARNINGS 
#include <iostream>
#include <list>

using namespace std;

// 烤串师傅
class Cooker {
public:
	void makeChicken() {
		cout << "烤串师傅 烤了 鸡肉" << endl;
	}
	void makeChuaner() {
		cout << " 烤串师傅 烤了 羊肉串 " << endl;
	}
};

//抽象的命令
class Command {
public:
	Command(Cooker *cooker) {
		this->cooker = cooker;
	}

	~Command() {
		if (this->cooker != NULL) {
			delete cooker;
		}
	}

	//菜单的执行命令
	virtual void execute() = 0;

protected:
	Cooker* cooker;
};
//具体的 羊肉串命令
class CommandChuaner:public Command {
public:
	CommandChuaner(Cooker *cooker) : Command(cooker) {}

	//菜单的执行命令
	virtual void execute() {
		this->cooker->makeChuaner();
	}
};
//具体的 鸡肉命令
class CommandChicken :public Command {
public:
	CommandChicken(Cooker *cooker) : Command(cooker) {}

	//菜单的执行命令
	virtual void execute() {
		this->cooker->makeChicken();
	}
};
class Waitress {
public:
	Waitress() {
		cmd_list.clear();
	}
	//添加命令的方法
	void setCmd(Command * cmd) {
		this->cmd_list.push_back(cmd);
	}
	//批量执行命令
	void notify() {
		for (list<Command* >::iterator it = cmd_list.begin(); it != cmd_list.end(); it++) {
			(*it)->execute();
		}
	}
private:
	list<Command* > cmd_list;
};

int main(void)
{
	Waitress *mm = new Waitress;

	//点餐
	Command *cmdChuaner = new CommandChuaner(new Cooker);
	Command *cmdChicken = new CommandChicken(new Cooker);

	mm->setCmd(cmdChicken);
	mm->setCmd(cmdChuaner);
	//下单
	mm->notify();
	delete mm;
	return 0;
}

 

Category: 编程, 资源分享

全栈开发者×创业偏执狂

相信代码能改变命运,也相信凌晨四点的服务器警报里有真实的人生。

我的创业项目:
SHOPAGG / SmallShop / DigitShops / 文硕阁

© 2025 庄朋龙的博客