设计模式读书笔记:Command(命令)

原创 2015年07月10日 17:37:03

意图:

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

结构图:来自 《23种设计模式 - 郗晓勇》


实现:https://github.com/panshiqu/patterns/tree/master/Command

Command

namespace NS_COMMAND {

class Command {
public:
	Command() {}
	virtual ~Command() {}
	virtual void execute(void) = 0;
};

template <class TReceiver>
class SimpleCommand : public Command {
public:
	typedef void (TReceiver:: *Action)();
	SimpleCommand(TReceiver *tr, Action act) : _treceiver(tr), _action(act) {}
	virtual void execute(void);
private:
	TReceiver *_treceiver;
	Action _action;
};

template <class TReceiver>
void SimpleCommand<TReceiver>::execute() {
	(_treceiver->*_action)();
}

} /* namespace NS_COMMAND */
ConcreteCommand

#include "Receiver.h"

namespace NS_COMMAND {

class ConcreteCommand {
public:
	ConcreteCommand(Receiver *receiver) : _receiver(receiver) {}
	virtual ~ConcreteCommand() {}
	virtual void execute(void)
	{
		_receiver->action();
	}

private:
	Receiver *_receiver;
};

} /* namespace NS_COMMAND */
Receiver
#include <iostream>

namespace NS_COMMAND {

class Receiver {
public:
	Receiver() {}
	virtual ~Receiver() {}
	void action(void)
	{
		std::cout << "Receiver Action." << std::endl;
	}
};

} /* namespace NS_COMMAND */
main

#include "Command/Command.h"
#include "Command/Receiver.h"
#include "Command/ConcreteCommand.h"
using namespace NS_COMMAND;
int main(void)
{
	Receiver r;
	ConcreteCommand cc(&r);
	cc.execute();

	// 使用模板创建简单命令
	SimpleCommand<Receiver> sc(&r, &Receiver::action);
	sc.execute();
}
附加:

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

设计模式笔记之命令模式(command Pattern)

一、概述:命令模式是对命令的封装。命令模式把发出命令的责仸和执行命令的责仸分割开,委派给不同的对象。二:实例:1.定义一个接口,为所有的命令声明了接口,调用execute方法,就可以让接收者执行相关的...

深入浅出设计模式之命令模式、适配器模式、外观模式

命令模式

HeadFirst设计模式读书笔记

  • 2008年05月16日 17:20
  • 50KB
  • 下载

设计模式读书笔记-----命令模式

在开发过程中,我可能会需要向某些对象发送一些请求,但是我们不知请求的具体接收者是谁,也不知道被请求的操作是那个,我们只知道在程序运行中指定具体的请求接收者即可。打个比方,电视遥控器,我们只需要知道按那...
  • chenssy
  • chenssy
  • 2013年07月20日 10:28
  • 3368

《Android源码设计模式》读书笔记 (11) 第11章 命令模式

前言 命令模式也是一种行为型的设计模式 定义 定义:将一系列的方法调用封装,用户只需调用一个方法执行,那么所有这些被封装的方法就会挨个执行调用. 优点:更弱的耦合性,更灵活的控制性,以及更好的扩展性....

【读书笔记】HeadFirst设计模式——命令模式简述

今天又复习了一遍命令模式 命令模式是指,将“请求”封装成命令对象。命令对象是通过封装接收者和绑定一组动作来封装请求的。 通过命令模式,将动作的请求者和动作的执行者进行解耦。即请求的调用者只接收并处...

《Android源码设计模式解析与实战》读书笔记(十一)——命令模式

第十一章 让程序畅通执行——命令模式 1.定义: 将一个请求封装成一个对象,让用户使用不同的请求把客户端参数化,对请求进行排队或者记录请求日志,并支持可撤销的操作。 2.使用场景: 1).需要抽象...

设计模式读书笔记-----命令模式

在开发过程中,我可能会需要向某些对象发送一些请求,但是我们不知请求的具体接收者是谁,也不知道被请求的操作是那个,我们只知道在程序运行中指定具体的请求接收者即可。打个比方,电视遥控器,我们只需要知道按那...

《HeadFirst设计模式》读书笔记-第6章-命令模式

定义 命令模式(command pattern)将请求封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 从类图可以看出,一个命令对象通过在特定接收者上...
  • rex_nie
  • rex_nie
  • 2017年03月21日 23:06
  • 103

【设计模式】《Head First 设计模式》读书笔记——命令模式

命令模式: 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 涉及设计原则: 1.为交互对象之间松耦合设计而努力 2.依赖抽象,不要依赖具体...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式读书笔记:Command(命令)
举报原因:
原因补充:

(最多只允许输入30个字)