#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