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方法(26360)
2.?VC6下使用STLPort(8404)
3.?VC6調試時,如何查看vector中的內容?(5045)
4.?Visual C++ Toolkit 2003 下載(4288)
5.?lines ending with only a carriage return have been detected. (2376)
評論排行榜
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
安帛偉
閱讀(565)
評論(0)
編輯
收藏
引用
所屬分類:
設計模式
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
OO設計原則
Command模式
工廠方法和抽象工廠
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 安帛偉
日日狠狠久久偷偷色综合免费
|
久久精品视频一
|
久久婷婷五月综合国产尤物app
|
久久精品国产影库免费看
|
久久国产V一级毛多内射
|
久久精品国产99国产精品导航
|
国产精品久久久久9999高清
|
久久精品国产第一区二区
|
波多野结衣中文字幕久久
|
久久久久亚洲AV无码专区首JN
|
丁香久久婷婷国产午夜视频
|
久久久久久精品成人免费图片
|
伊人久久免费视频
|
久久国产成人精品麻豆
|
99国产欧美久久久精品蜜芽
|
亚洲狠狠综合久久
|
久久91精品国产91久久小草
|
国产精品99久久精品
|
嫩草影院久久99
|
国产农村妇女毛片精品久久
|
69国产成人综合久久精品
|
精品国产综合区久久久久久
|
久久免费精品视频
|
狠狠色综合久久久久尤物
|
久久精品中文字幕有码
|
久久久久九九精品影院
|
中文字幕无码久久久
|
久久久噜噜噜www成人网
|
久久精品国产99国产精品澳门
|
91精品日韩人妻无码久久不卡
|
无码任你躁久久久久久老妇
|
伊人久久综合成人网
|
一本伊大人香蕉久久网手机
|
精品久久久久久无码免费
|
亚洲熟妇无码另类久久久
|
国产精品成人99久久久久
|
久久99热这里只频精品6
|
51久久夜色精品国产
|
亚洲精品午夜国产VA久久成人
|
亚洲精品国产综合久久一线
|
91精品观看91久久久久久
|