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方法(26390)
2.?VC6下使用STLPort(8450)
3.?VC6調試時,如何查看vector中的內容?(5081)
4.?Visual C++ Toolkit 2003 下載(4351)
5.?lines ending with only a carriage return have been detected. (2403)
評論排行榜
1.?VC6下使用STLPort(21)
2.?正確使用stl map的erase方法(7)
3.?Visual C++ Toolkit 2003 下載(6)
4.?VC6調試時,如何查看vector中的內容?(1)
5.?雙分派(double dispatch)(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
安帛偉
閱讀(578)
評論(0)
編輯
收藏
引用
所屬分類:
設計模式
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
OO設計原則
Command模式
工廠方法和抽象工廠
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 安帛偉
久久精品国产清高在天天线
|
久久精品国产清自在天天线
|
久久亚洲欧美国产精品
|
久久久久久国产精品美女
|
国产成人香蕉久久久久
|
97精品国产97久久久久久免费
|
久久er国产精品免费观看2
|
久久精品人人做人人爽电影
|
免费观看成人久久网免费观看
|
久久超乳爆乳中文字幕
|
久久精品视频免费
|
久久99精品久久久久久秒播
|
国产精自产拍久久久久久蜜
|
久久综合精品国产一区二区三区
|
日产久久强奸免费的看
|
综合久久国产九一剧情麻豆
|
久久综合亚洲欧美成人
|
高清免费久久午夜精品
|
久久久久亚洲AV成人网
|
久久精品国产亚洲AV影院
|
久久99精品久久久久久动态图
|
久久精品国产亚洲AV无码麻豆
|
俺来也俺去啦久久综合网
|
国产福利电影一区二区三区,免费久久久久久久精
|
国产成人久久777777
|
三级韩国一区久久二区综合
|
国产亚洲美女精品久久久2020
|
人妻精品久久无码专区精东影业
|
久久99国产精品久久99
|
久久精品国产欧美日韩99热
|
久久久精品人妻一区二区三区蜜桃
|
色综合久久久久无码专区
|
午夜不卡888久久
|
久久伊人精品一区二区三区
|
国产成人综合久久综合
|
欧美日韩成人精品久久久免费看
|
久久精品国产清自在天天线
|
精品国产青草久久久久福利
|
久久久久高潮毛片免费全部播放
|
99久久精品国产毛片
|
蜜臀av性久久久久蜜臀aⅴ
|