原网址:https://blog.csdn.net/walkerkalr/article/details/29853441
#include <iostream>
using namespace std;
//电灯类
class Light {
public:
void On() {
cout << "Light On !" << endl;
}
void Off() {
cout << "Ligeht Off !" <<endl;
}
};
//命令类
class Command {
public:
virtual void execute() = 0;
};
//具体命令类
class LightOnCommand : public Command {
public:
LightOnCommand(Light *lig) : light_(lig) {}
void execute() {
light_->On();
}
private:
Light *light_;
};
class LightOffCommand : public Command {
public:
LightOffCommand(Light *lig) : light_(lig) {}
void execute() {
light_->Off();
}
private:
Light *light_;
};
//遥控器类
class RemoteControl {
public:
void SetCommand(Command *command) {
slot_ = command;
}
void ButtonOn() {
slot_->execute();
}
private:
Command *slot_;
};
//客户代码
int main() {
RemoteControl light_on_control;
RemoteControl light_off_control;
Command *on_command = new LightOnCommand(new Light());
Command *off_command = new LightOffCommand(new Light());
light_on_control.SetCommand(on_command);
light_off_control.SetCommand(off_command);
light_on_control.ButtonOn();
light_off_control.ButtonOn();
delete on_command;
delete off_command;
}
运行结果:
Light On !
Ligeht Off !