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 © 安帛偉
亚洲综合久久夜AV
|
热久久最新网站获取
|
久久久久久亚洲精品成人
|
日韩精品久久久久久免费
|
亚洲国产精品久久久天堂
|
99久久人妻无码精品系列蜜桃
|
国内精品伊人久久久久
|
精品久久久久久无码国产
|
久久国产欧美日韩精品
|
国产成人精品久久免费动漫
|
狠狠久久综合伊人不卡
|
精品久久亚洲中文无码
|
亚洲国产二区三区久久
|
蜜桃麻豆WWW久久囤产精品
|
俺来也俺去啦久久综合网
|
久久亚洲色一区二区三区
|
三上悠亚久久精品
|
国产成人无码精品久久久免费
|
91精品久久久久久无码
|
午夜精品久久久久9999高清
|
久久精品麻豆日日躁夜夜躁
|
国产精品无码久久久久
|
久久精品国产亚洲av麻豆图片
|
国产亚洲欧美成人久久片
|
久久夜色精品国产亚洲
|
狠狠色丁香婷婷综合久久来来去
|
欧洲精品久久久av无码电影
|
午夜精品久久久内射近拍高清
|
精品免费久久久久国产一区
|
久久天天躁狠狠躁夜夜躁2O2O
|
欧美色综合久久久久久
|
狠色狠色狠狠色综合久久
|
精品国产乱码久久久久久人妻
|
国产成年无码久久久久毛片
|
久久久久青草线蕉综合超碰
|
久久午夜综合久久
|
久久精品国产精品青草app
|
国产美女久久精品香蕉69
|
久久精品亚洲精品国产色婷
|
久久人人爽人人爽人人片AV麻豆
|
国产精品久久久久AV福利动漫
|