zoukankan      html  css  js  c++  java
  • 设计模式复习-命令模式

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

  • 相关阅读:
    C++中的内存分配
    进程间通信(IPC)
    一段重新开始的旅程
    状态压缩模版3:地雷
    状态压缩模版2:选数
    状态压缩模版1:滑块
    后缀数组练习4:Life Forms
    后缀数组练习3:连续重复子串
    后缀数组练习2:可重叠的k次最长重复子串
    后缀数组练习1:不可重叠最长重复子串
  • 原文地址:https://www.cnblogs.com/csnd/p/12061908.html
Copyright © 2011-2022 走看看