
#ifndef COMMANDHD
#define COMMANDHD
#include <iostream>
/*
* reciever, 命令实际接收执行者,包括处理器,声卡
*/
class Processor
{
public:
Processor();
void unlockScreen();
void startApp();
void lockScreen();
};
class SoundCard
{
public:
SoundCard();
void incraseSound();
void decreaseSound();
};
/*
* 命令基类
*/
class Command {
public:
virtual ~Command() {};
virtual void execute() = 0;
protected:
Command() {};
};
/*
具体命令
*/
class LockScreenCommand : public Command {
public:
LockScreenCommand(Processor* processor);
virtual void execute();
private:
Processor* _processor;
};
class IncSoundCmd : public Command {
public:
IncSoundCmd(SoundCard* soundcard);
virtual void execute();
private:
SoundCard* soundcard;
};
// ......
/*
* 手机,Invoker,激活命令执行,使用者与它进行交互
*/
class Phone {
public:
/*
* 设置手机按钮的接口功能
*/
void setCommand( Command* command );
/*
* 执行命令(转发至具体的元器件)
*/
void runCommand();
private:
Command * _command;
};
#endif #include "command.h"
class User
{
public:
User();
void buyPhone();
void lockScreen();
void unlockScreen();
void startApp();
void incSound();
void decSound();
private:
Phone* _myphone;
Processor* _processor;
SoundCard* _soundCard;
};#include "user.h"
int main()
{
User* user = new User();
user->unlockScreen();
user->startApp();
user->incSound();
user->decSound();
user->lockScreen();
system("Pause");
}
运行截图:设计模式(14) 命令模式(Command)C++实现,布布扣,bubuko.com
原文:http://blog.csdn.net/zs634134578/article/details/21031509