Design&Art
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
26 Posts :: 0 Stories :: 38 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(3)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
BOOST(2)
C++(8)
SCM(1)
STL(4)
VC/MFC(2)
XML(1)
交互設(shè)計(jì)(1)
設(shè)計(jì)模式(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++庫(kù)
Boost
Loki
STLport
搜索
最新評(píng)論
1.?re: 正確使用stl map的erase方法
@啊啊
其實(shí)是c++98跟c++11標(biāo)準(zhǔn)里的區(qū)別
--blong
2.?re: VC6調(diào)試時(shí),如何查看vector中的內(nèi)容?
感謝LZ分享!
--江楓漁火
3.?re: 正確使用stl map的erase方法[未登錄](méi)
@啊啊
沒(méi)有仔細(xì)看map用法,不要瞎評(píng)論。
--123
4.?re: lines ending with only a carriage return have been detected.
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--Linda
5.?re: 正確使用stl map的erase方法
@過(guò)客
說(shuō)的很好嘛. 這種僅適用于windows的代碼本就不該提倡.
--aa
閱讀排行榜
1.?正確使用stl map的erase方法(26367)
2.?VC6下使用STLPort(8433)
3.?VC6調(diào)試時(shí),如何查看vector中的內(nèi)容?(5058)
4.?Visual C++ Toolkit 2003 下載(4317)
5.?lines ending with only a carriage return have been detected. (2386)
評(píng)論排行榜
1.?VC6下使用STLPort(21)
2.?正確使用stl map的erase方法(7)
3.?Visual C++ Toolkit 2003 下載(6)
4.?VC6調(diào)試時(shí),如何查看vector中的內(nèi)容?(1)
5.?雙分派(double dispatch)(1)
Command模式
Command模式的目的是為了使命令請(qǐng)求方與命令的執(zhí)行方解耦合。
因解耦合可得到的好處是:1. 增加新的具體命令不影響其他的類;2. 可以把多個(gè)命令聚合在一起組成命令隊(duì)列。
Command模式的缺點(diǎn):使用命令模式會(huì)導(dǎo)致某些系統(tǒng)有過(guò)多的具體命令類。
//
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
;
}
;
//
調(diào)用者
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[])
{
//
客戶要告知命令發(fā)給誰(shuí)?
Receiver
*
receiver
=
new
Receiver();
//
客戶要告知命令是什么?
Command
*
command
=
new
ConcreteCommand(receiver);
//
客戶把命令給調(diào)用者
Invoker
*
invoker
=
new
Invoker(command);
//
調(diào)用者通過(guò)Command接口把命令交給接收者執(zhí)行
invoker
->
action();
return
0
;
}
與其他模式的關(guān)系:
1. Command與Composite
Composite可以用來(lái)組合多個(gè)具體命令
2. Command與Memento
如果命令需要撤銷(undo)和恢復(fù)(redo)功能,備忘錄模式可以用來(lái)存儲(chǔ)關(guān)于命令的效果狀態(tài)信息。
3. Command與Prototype
如果命令類有clone()方法,命令就可以被復(fù)制。
posted on 2007-05-21 23:32
安帛偉
閱讀(567)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
設(shè)計(jì)模式
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
OO設(shè)計(jì)原則
Command模式
工廠方法和抽象工廠
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © 安帛偉
亚洲欧洲精品成人久久奇米网
|
久久精品国产99久久久古代
|
漂亮人妻被黑人久久精品
|
亚洲午夜福利精品久久
|
久久亚洲精品人成综合网
|
精品久久久久久国产
|
久久亚洲中文字幕精品一区四
|
亚洲国产成人久久精品99
|
狠狠色伊人久久精品综合网
|
久久九九久精品国产
|
久久精品九九亚洲精品
|
亚洲欧美日韩精品久久亚洲区
|
久久精品中文騷妇女内射
|
久久婷婷五月综合97色直播
|
久久精品国产亚洲av麻豆色欲
|
日韩精品久久久久久久电影
|
亚洲国产精品久久久久
|
国产精品国色综合久久
|
亚洲午夜久久久影院伊人
|
美女久久久久久
|
久久成人永久免费播放
|
久久久久国产精品麻豆AR影院
|
91精品国产高清久久久久久91
|
国产精品视频久久
|
国产精品亚洲美女久久久
|
国产成人香蕉久久久久
|
久久国产成人午夜aⅴ影院
|
97精品国产97久久久久久免费
|
国产精品无码久久综合
|
久久精品国产亚洲麻豆
|
国产三级精品久久
|
久久国产免费直播
|
99久久精品免费
|
伊人久久大香线蕉成人
|
国产亚洲美女精品久久久久狼
|
99热都是精品久久久久久
|
精品国产乱码久久久久久呢
|
久久成人精品视频
|
久久久精品人妻一区二区三区四
|
丁香五月网久久综合
|
无码8090精品久久一区
|