• 设计模式复习-命令模式


    #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;
    }

  • 相关阅读:
    字典操作
    集合操作
    字符编码与转码
    基于Vue的WebApp项目开发(二)
    算法之递归
    webpack学习(一)
    基于Vue的WebApp项目开发(一)
    webpack踩坑之旅
    vue2.0中的watch和计算属性computed
    vue2.0路由写法、传参和嵌套
  • 原文地址:https://www.cnblogs.com/csnd/p/12061908.html
Copyright © 2020-2023  润新知