当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

设计模式解析和实现之十四-Command模式

    作用:

    将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。

    UML结构图:



    解析:

    Comnand模式的思想是把命令封装在一个类中,就是这里的Command基类,同时把接收对象也封装在一个类中就是这里的Receiver类中,由调用这个命令的类也就是这里的Invoker类来调用。其实,如果弄清楚了Command模式的原理,就会发现其实它和注册回调函数的原理是很相似的,而在面向过程的设计中的回调函数其实和这里的Command类的作用是一致的。采用Command模式解耦了命令的发出者和命令的执行者。

    实现:

    1)Command.h

 /**//********************************************************************
    created:    2006/08/04
    filename:     Command.h
    author:        李创
                http://www.cppblog.com/converse/

    purpose:    Command模式的演示代码
*********************************************************************/

#ifndef COMMAND_H
#define COMMAND_H

class Command
{
public:
    virtual ~Command() {}

    virtual void Execute() = 0;
};

class Receiver
{
public:
    void Action();
};

class Invoker
{
public:
    Invoker(Command *pCommand);
    ~Invoker();

    void Invoke();
private:
    Command *m_pCommand;
};

class ConcreateComand
    : public Command
{
public:
    ConcreateComand(Receiver* pReceiver);
    virtual ~ConcreateComand();

    virtual void Execute();

private:
    Receiver* m_pReceiver;
};

#endif

 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接