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

  • 相关阅读:
    codebak
    (转)关于APACHE和php
    c#pda(wince)摄像头拍照程序
    C#语言实现WINCE全屏幕显示
    (转).NET反编译工具Reflector及插件
    (转)解决WebService第一次访问速度慢的问题
    (转)C#.net winform skin 皮肤大全
    python模块整理19pyMongo
    python模块整理26数据持久性pickle、shelve、SQLite
    python模块整理21multiprocessing
  • 原文地址:https://www.cnblogs.com/csnd/p/12061908.html
Copyright © 2011-2022 走看看