命令模式----C++实现

命令模式

定义:

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

适用性:

当有如下需求时,可以用命令模式:

1、 想抽象出待执行的动作以参数化某对象。命令模式是回调机制的一个面向对象的替代品。

2、 在不同的时刻指定,排列和执行请求。

3、 支持取消操作。

4、 支持修改日志。

5、 用构建在原语操作上的高层操作构造一个系统。

结构:

命令模式----C++实现

实现:

//命令接收者vcD4KPHAgYWxpZ249"left">class Receiver

{

public:

voiddoSomething()

{

cout

}

};

//抽象的命令类

class Command

{

public:

virtual void Execute() {}

virtual ~Command(){}

};

//具体命令类

class ConcreteCommand1:public Command

{

public:

ConcreteCommand1(Receiver*pReceiver):m_pReceiver(pReceiver)

{ }

voidExecute()

{

cout

m_pReceiver->doSomething();

}

private:

Receiver *m_pReceiver;

};

class ConcreteCommand2:public Command

{

public:

ConcreteCommand2(Receiver*pReceiver):m_pReceiver(pReceiver)

{ }

voidExecute()

{

cout

m_pReceiver->doSomething();

}

private:

Receiver *m_pReceiver;

};

//调用者

class Invoker

{

public:

voidSetCommand(Command *pCommand)

{

m_pCommand = pCommand;

}

voidAction()

{

m_pCommand->Execute();

}

private:

Command *m_pCommand;

};

Invoker *pInvoker = new Invoker;

Receiver *pR = new Receiver;

Command *pCommand1 = new ConcreteCommand1(pR);

Command *pCommand2 = new ConcreteCommand2(pR);

pInvoker->SetCommand(pCommand1);

pInvoker->Action();

pInvoker->SetCommand(pCommand2);

pInvoker->Action();

命令模式----C++实现

分类:默认分类 时间:2012-07-21 人气:2
本文关键词:
分享到:

相关文章

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.096 (s). 9 q(s)