0
点赞
收藏
分享

微信扫一扫

设计模式复习-命令模式

设计模式复习-命令模式_#include

#pragma once
#include "stdafx.h"
#include<set>
#include<string>
#include<iostream>
using namespace std;

/*
设计模式-命令模式(Command)
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;
对请求排队或记录请求日志,以及支持可撤销的操作。
*/

class CReceiver {//知道如何实施于执行一个与请求相关的类的操作。
public:
void Action() {
cout << "command" << endl;
}
};

class CCommand {//用来声明执行操作的接口。
protected:
CReceiver *m_pReceiver;
public:
CCommand(CReceiver *pCReceiver) {
m_pReceiver = pCReceiver;
}
virtual void Execute() = 0;
};

class CConcreteCommand :public CCommand {//将一个接受对象绑定于一个接受动作,调用接受者相应的操作,以实现Execute.
public:
CConcreteCommand(CReceiver *pCReceiver) :CCommand(pCReceiver) {

}
void Execute() {
m_pReceiver->Action();
}
};

class Cinvoker {//要求该命令执行这个请求
private:
CCommand *m_pCommand;
public:
void SetCommand(CCommand *pCommand) {
m_pCommand = pCommand;
}
void ExecuteCommand() {
m_pCommand->Execute();
}
};



int main() {

CReceiver *pReceiver = new CReceiver();
CCommand *pCommand = new CConcreteCommand(pReceiver);
Cinvoker *pInvoker = new Cinvoker();

pInvoker->SetCommand(pCommand);
pInvoker->ExecuteCommand();

delete pReceiver;
delete pCommand;
delete pInvoker;

getchar();
return 0;
}

设计模式复习-命令模式_#pragma_02



举报

相关推荐

0 条评论