用C++行为模式详细表示这个情景老板来了 员工工作 司机擦车 前台服务顾客 老板走了 员工炒股 前台化妆
时间: 2024-02-23 17:01:18 浏览: 16
这个情景可以使用命令模式来实现。
首先,定义一个抽象命令类(Command),其中包含一个执行方法execute()。
然后,定义具体命令类,如工作命令(WorkCommand)、擦车命令(CleanCarCommand)、服务命令(ServiceCommand)、炒股命令(StockCommand)、化妆命令(MakeupCommand)。
每个具体命令类都实现了execute()方法,并在其中包含了对应的行为。
接着,定义一个请求者类(Invoker),其中包含一个命令成员变量和一个执行命令的方法。
最后,在主函数中,实例化各个具体命令类,并分别赋值给请求者类的命令成员变量。当老板来到时,请求者类调用命令的execute()方法执行相应行为;当老板走了,再次设置请求者类的命令成员变量,继续执行后续行为。
下面是具体的代码实现:
```c++
#include <iostream>
using namespace std;
// 抽象命令类
class Command {
public:
virtual void execute() = 0;
};
// 具体命令类
class WorkCommand : public Command {
public:
virtual void execute() {
cout << "员工开始工作" << endl;
}
};
class CleanCarCommand : public Command {
public:
virtual void execute() {
cout << "司机擦洗车辆" << endl;
}
};
class ServiceCommand : public Command {
public:
virtual void execute() {
cout << "前台服务顾客" << endl;
}
};
class StockCommand : public Command {
public:
virtual void execute() {
cout << "员工开始炒股" << endl;
}
};
class MakeupCommand : public Command {
public:
virtual void execute() {
cout << "前台化妆" << endl;
}
};
// 请求者类
class Invoker {
private:
Command *m_pCommand;
public:
void setCommand(Command *pCommand) {
m_pCommand = pCommand;
}
void executeCommand() {
m_pCommand->execute();
}
};
int main() {
// 实例化各个具体命令类
WorkCommand work;
CleanCarCommand cleanCar;
ServiceCommand service;
StockCommand stock;
MakeupCommand makeup;
Invoker invoker;
// 老板来了,员工工作,司机擦车,前台服务顾客
invoker.setCommand(&work);
invoker.executeCommand();
invoker.setCommand(&cleanCar);
invoker.executeCommand();
invoker.setCommand(&service);
invoker.executeCommand();
// 老板走了,员工炒股,前台化妆
invoker.setCommand(&stock);
invoker.executeCommand();
invoker.setCommand(&makeup);
invoker.executeCommand();
return 0;
}
```