大胖的部落格

Just a note

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
将要执行的命令封装在Receiver类中,执行命令的指令封装在Command类中,Command类保存一个Receiver指针。
先注册一个命令(将Receiver传给Command);
再执行命令(调用Command的函数,来调用Receiver的函数),在执行命令前可以取消注册的命令(删除Command中的Receiver)。
类似函数回调,先注册一个函数,需要时再调用。

#include <iostream>

using namespace std;

//具体执行命令的类
class Receiver
{
public:
    
void Action(){cout<<"Action"<<endl;}
}
;

//封装命令的抽象基类
class Command
{
public:
    
virtual ~Command(){}
    
virtual void Execute() = 0;
}
;

//具体命令子类,与一个receiver相关联
class ConcreteCommand: public Command
{
public:
    ConcreteCommand(Receiver
* p):pr(p){}
    
~ConcreteCommand(){delete pr; pr = NULL;}
    
void Execute(){pr->Action();}
private:
    Receiver
* pr;
}
;


int main()
{
    Receiver
* pr = new Receiver;
    
//将命令与实现相关联
    Command* pc = new ConcreteCommand(pr);

    
//执行
    pc->Execute();
    delete pc;
    
return 0;
}
posted on 2009-06-10 10:05 大胖 阅读(125) 评论(0)  编辑 收藏 引用 所属分类: Design Pattern

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理