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 © 安帛偉
久久久久久免费视频
|
性做久久久久久久久浪潮
|
日韩人妻无码精品久久久不卡
|
色综合久久无码中文字幕
|
人妻少妇久久中文字幕一区二区
|
青青草原综合久久大伊人精品
|
久久国产一片免费观看
|
久久久久久精品久久久久
|
国内精品伊人久久久久
|
久久强奷乱码老熟女网站
|
无码日韩人妻精品久久蜜桃
|
激情综合色综合久久综合
|
午夜欧美精品久久久久久久
|
久久er国产精品免费观看8
|
亚洲人成电影网站久久
|
中文字幕一区二区三区久久网站
|
国产精品一区二区久久不卡
|
亚洲欧美日韩久久精品
|
久久综合丝袜日本网
|
久久香蕉国产线看观看精品yw
|
久久久WWW成人免费毛片
|
91精品国产综合久久久久久
|
久久亚洲sm情趣捆绑调教
|
久久九九久精品国产
|
狠狠色丁香婷婷综合久久来
|
久久夜色精品国产亚洲
|
久久青青草原精品国产不卡
|
久久久久久综合一区中文字幕
|
久久久久综合中文字幕
|
久久噜噜电影你懂的
|
99久久免费国产精精品
|
精品无码久久久久久午夜
|
欧美牲交A欧牲交aⅴ久久
|
久久精品国产亚洲AV久
|
久久九九久精品国产免费直播
|
久久综合视频网
|
久久人人爽人人爽人人爽
|
久久中文字幕一区二区
|
色综合久久综合网观看
|
色成年激情久久综合
|
久久www免费人成看国产片
|