super-
C++博客
首页
新随笔
新文章
联系
聚合
管理
posts - 11,comments - 13,trackbacks - 0
<
2009年6月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2009年7月 (2)
2009年6月 (9)
搜索
最新评论
1. re: 关于release和debug中vector的疑问
@Super-
3q
--wy
2. re: c++内存池
评论内容较长,点击标题查看
--dissertation writing
3. re: c++内存池
评论内容较长,点击标题查看
--Original essay
4. re: c++内存池
大家一起分享!
--凡客诚品
5. re: c++内存池[未登录]
评论内容较长,点击标题查看
--dd
阅读排行榜
1. 关于release和debug中vector的疑问(3633)
2. linux 创建进程(3271)
3. c++内存池(2670)
4. State设计模式(1384)
5. Observer推模式(1372)
评论排行榜
1. c++内存池(6)
2. State设计模式(2)
3. 关于release和debug中vector的疑问(2)
4. Bridge模式(2)
5. Observer推模式(0)
command模式
//以下采用函数指针的方法完成command模式
1
#include
<
iostream
>
2
#include
<
stdio.h
>
3
#include
<
stdlib.h
>
4
5
/**/
/*
6
command模式:将请求放入到一个类A中,将请求的操作放入另一个类B中,
7
将B作为A的一个Private成员,然后在类C中包含一个类A的Private成员,这样
8
可以通过C来完成B的处理。
9
*/
10
11
class
CAction
12
{
13
protected
:
14
CAction()
15
{
16
17
}
18
public
:
19
~
CAction()
20
{
21
22
}
23
virtual
int
Operation()
=
0
;
24
25
}
;
26
27
class
CExtendAction:
public
CAction
28
{
29
public
:
30
CExtendAction()
31
{
32
33
}
34
~
CExtendAction()
35
{
36
37
}
38
int
Operation()
39
{
40
std::cout
<<
"
Execute Operation!
"
<<
std::endl;
41
return
1
;
42
}
43
}
;
44
45
typedef
int
(CAction::
*
oper)();
//
定义类成员指针
46
47
class
CCommand
48
{
49
protected
:
50
CAction
*
_act;
51
oper _opt;
52
public
:
53
CCommand(CAction
*
act,oper opt)
54
{
55
_act
=
act;
56
_opt
=
opt;
57
}
58
59
~
CCommand()
60
{
61
62
}
63
64
int
Execute()
65
{
66
return
(_act
->*
_opt)();
67
}
68
}
;
69
70
71
int
main(
int
argc,
char
*
argv[])
72
{
73
CAction
*
act
=
new
CExtendAction();
74
CCommand comd(act,
&
CAction::Operation);
75
76
comd.Execute();
77
}
posted on 2009-06-19 10:00
Super-
阅读(289)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理