Design&Art
C++博客
首页
新随笔
联系
聚合
管理
26 Posts :: 0 Stories :: 38 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
BOOST(2)
C++(8)
SCM(1)
STL(4)
VC/MFC(2)
XML(1)
交互设计(1)
设计模式(3)
随笔档案
2009年4月 (1)
2009年3月 (1)
2009年1月 (1)
2008年5月 (1)
2007年12月 (1)
2007年11月 (3)
2007年10月 (2)
2007年9月 (4)
2007年8月 (2)
2007年6月 (1)
2007年5月 (2)
2007年4月 (6)
2007年3月 (1)
C++库
Boost
Loki
STLport
搜索
最新评论
1. re: 正确使用stl map的erase方法
@啊啊
其实是c++98跟c++11标准里的区别
--blong
2. re: VC6调试时,如何查看vector中的内容?
感谢LZ分享!
--江枫渔火
3. re: 正确使用stl map的erase方法[未登录]
@啊啊
没有仔细看map用法,不要瞎评论。
--123
4. re: lines ending with only a carriage return have been detected.
评论内容较长,点击标题查看
--Linda
5. re: 正确使用stl map的erase方法
@过客
说的很好嘛. 这种仅适用于windows的代码本就不该提倡.
--aa
阅读排行榜
1. 正确使用stl map的erase方法(26323)
2. VC6下使用STLPort(8319)
3. VC6调试时,如何查看vector中的内容?(4998)
4. Visual C++ Toolkit 2003 下载(4222)
5. lines ending with only a carriage return have been detected. (2336)
评论排行榜
1. VC6下使用STLPort(21)
2. 正确使用stl map的erase方法(7)
3. Visual C++ Toolkit 2003 下载(6)
4. OO设计原则(1)
5. VC6调试时,如何查看vector中的内容?(1)
Command模式
Command模式的目的是为了使命令请求方与命令的执行方解耦合。
因解耦合可得到的好处是:1. 增加新的具体命令不影响其他的类;2. 可以把多个命令聚合在一起组成命令队列。
Command模式的缺点:使用命令模式会导致某些系统有过多的具体命令类。
//
Command.cpp : Defines the entry point for the console application.
//
#include
"
stdafx.h
"
#include
<
iostream
>
using
namespace
std;
//
命令接口
class
Command
{
public
:
virtual
void
execute()
=
0
;
}
;
//
调用者
class
Invoker
{
public
:
Invoker(Command
*
command)
{
this
->
command
=
command;
}
void
action()
{
command
->
execute();
}
private
:
Command
*
command;
}
;
//
接收者
class
Receiver
{
public
:
Receiver()
{
}
void
action()
{
cout
<<
"
Action has been taken.
"
<<
endl;
}
}
;
//
具体的命令
class
ConcreteCommand:
public
Command
{
public
:
ConcreteCommand(Receiver
*
receiver)
{
this
->
receiver
=
receiver;
}
void
execute()
{
receiver
->
action();
}
private
:
Receiver
*
receiver;
}
;
//
客户
int
main(
int
argc,
char
*
argv[])
{
//
客户要告知命令发给谁?
Receiver
*
receiver
=
new
Receiver();
//
客户要告知命令是什么?
Command
*
command
=
new
ConcreteCommand(receiver);
//
客户把命令给调用者
Invoker
*
invoker
=
new
Invoker(command);
//
调用者通过Command接口把命令交给接收者执行
invoker
->
action();
return
0
;
}
与其他模式的关系:
1. Command与Composite
Composite可以用来组合多个具体命令
2. Command与Memento
如果命令需要撤销(undo)和恢复(redo)功能,备忘录模式可以用来存储关于命令的效果状态信息。
3. Command与Prototype
如果命令类有clone()方法,命令就可以被复制。
posted on 2007-05-21 23:32
安帛伟
阅读(555)
评论(0)
编辑
收藏
引用
所属分类:
设计模式
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
OO设计原则
Command模式
工厂方法和抽象工厂
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 安帛伟