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方法(26359)
2.?VC6下使用STLPort(8402)
3.?VC6調試時,如何查看vector中的內容?(5044)
4.?Visual C++ Toolkit 2003 下載(4286)
5.?lines ending with only a carriage return have been detected. (2375)
評論排行榜
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 © 安帛偉
久久国产精品久久久
|
日韩久久久久久中文人妻
|
亚洲国产成人久久综合一区77
|
久久久噜噜噜久久中文字幕色伊伊
|
日韩十八禁一区二区久久
|
久久91精品国产91
|
亚洲精品无码久久久久
|
久久―日本道色综合久久
|
亚洲人AV永久一区二区三区久久
|
久久AV无码精品人妻糸列
|
2022年国产精品久久久久
|
久久久久久国产精品免费免费
|
中文字幕热久久久久久久
|
秋霞久久国产精品电影院
|
亚洲欧美一区二区三区久久
|
99久久婷婷免费国产综合精品
|
狠狠色丁香婷婷综合久久来来去
|
久久久久久久综合日本
|
99久久国产综合精品女同图片
|
免费观看久久精彩视频
|
久久综合88熟人妻
|
久久综合久久综合亚洲
|
国产成人无码精品久久久免费
|
欧美伊人久久大香线蕉综合
|
久久久久久精品久久久久
|
久久综合九色综合精品
|
三上悠亚久久精品
|
久久无码高潮喷水
|
精品国产日韩久久亚洲
|
国产亚洲色婷婷久久99精品91
|
久久亚洲精品人成综合网
|
一本久久a久久精品综合香蕉
|
久久99国产精品久久
|
97久久精品国产精品青草
|
久久久久人妻一区精品性色av
|
人人妻久久人人澡人人爽人人精品
|
99久久免费国产精品
|
久久精品国产亚洲AV大全
|
久久精品国产亚洲精品2020
|
久久亚洲AV成人无码电影
|
久久亚洲精品中文字幕
|