青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
蝸牛的家
男兒當(dāng)自強(qiáng)
C++博客
首頁(yè)
新文章
新隨筆
聚合
管理
posts - 48, comments - 21, trackbacks - 0
C++設(shè)計(jì)模式-Observer
意圖:
定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新
UML圖:
適用
當(dāng)一個(gè)抽象模型有兩個(gè)方面,其中一個(gè)方面依賴于另一方面。將這兩者封裝在獨(dú)立的對(duì)象中以使他們可以各自獨(dú)立地改變和復(fù)用
當(dāng)對(duì)一個(gè)對(duì)象的改變需要同時(shí)改變其他對(duì)象,而不知道具體有多少對(duì)象待改變
當(dāng)一個(gè)對(duì)象必須通知其他對(duì)象,而他又不能假定其他對(duì)象是誰(shuí)。換言之,你不希望這些對(duì)象是緊密耦合的
//
test.h
#include
<
list
>
typedef
int
STATE;
using
namespace
std;
/**/
////////////////////////////////////////////////////////////////////////
//
class
Observer;
class
Subject
{
public
:
Subject() : m_nSubjectState(
-
1
)
{}
virtual
~
Subject();
void
Notify();
//
通知對(duì)象改變狀態(tài)
void
Attach(Observer
*
pObserver);
//
新增對(duì)象
void
Detach(Observer
*
pObserver);
//
刪除對(duì)象
virtual
void
Setstate(STATE nState);
virtual
STATE Getstate();
protected
:
STATE m_nSubjectState;
list
<
Observer
*>
m_listObserver;
}
;
//
被更新的類
class
Observer
{
public
:
Observer() : m_nObserverState(
-
1
)
{}
virtual
~
Observer()
{}
virtual
void
Update(Subject
*
pSubject)
=
0
;
//
更新?tīng)顟B(tài)
protected
:
STATE m_nObserverState;
}
;
class
ConCreateSubject :
public
Subject
{
public
:
ConCreateSubject() : Subject()
{}
virtual
~
ConCreateSubject()
{}
virtual
void
SetState(STATE nState);
virtual
STATE GetState();
}
;
class
ConCreateObserver :
public
Observer
{
public
:
ConCreateObserver() : Observer()
{}
virtual
~
ConCreateObserver()
{}
virtual
void
Update(Subject
*
pSubject);
}
;
//
test.cpp : Defines the entry point for the console application.
//
#include
"
stdafx.h
"
#include
<
iostream
>
#include
<
algorithm
>
#include
"
test.h
"
using
namespace
std;
/**/
////////////////////////////////////////////////////////////////////////
//
void
Subject::Attach(Observer
*
pObserver)
{
cout
<<
"
Attach an Observer\n
"
;
m_listObserver.push_back(pObserver);
}
void
Subject::Detach(Observer
*
pObserver)
{
list
<
Observer
*>
::iterator iter;
iter
=
find(m_listObserver.begin(),m_listObserver.end(),pObserver);
if
(m_listObserver.end()
!=
iter)
{
m_listObserver.erase(iter);
}
cout
<<
"
Detach an ObServer\n
"
;
}
void
Subject::Notify()
{
cout
<<
"
Notify Observer's state\n
"
;
list
<
Observer
*>
::iterator iter1,iter2;
for
(iter1
=
m_listObserver.begin(),iter2
=
m_listObserver.end(); iter1
!=
iter2;
++
iter1)
{
(
*
iter1)
->
Update(
this
);
//
更新鏈表中所有對(duì)象的狀態(tài)
}
}
void
Subject::Setstate(STATE nState)
{
cout
<<
"
SetState by Subject \n
"
;
m_nSubjectState
=
nState;
}
STATE Subject::Getstate()
{
cout
<<
"
Getstate by Subject\n
"
;
return
m_nSubjectState;
}
Subject::
~
Subject()
{
list
<
Observer
*>
::iterator iter1,iter2,temp;
for
(iter1
=
m_listObserver.begin(),iter2
=
m_listObserver.end(); iter1
!=
iter2;)
{
temp
=
iter1;
++
iter1;
delete (
*
temp);
}
m_listObserver.clear();
}
void
ConCreateSubject::SetState(STATE nState)
{
cout
<<
"
Setstate by ConCreateSubject\n
"
;
m_nSubjectState
=
nState;
}
STATE ConCreateSubject::GetState()
{
cout
<<
"
Getstate by ConCreateSubject\n
"
;
return
m_nSubjectState;
}
void
ConCreateObserver::Update(Subject
*
pSubject)
{
if
(NULL
==
pSubject)
{
return
;
}
m_nObserverState
=
pSubject
->
Getstate();
cout
<<
"
The ObserverState is
"
<<
m_nObserverState
<<
endl;
}
/**/
////////////////////////////////////////////////////////////////////////
//
int
main(
int
argc,
char
*
argv[])
{
Observer
*
p1
=
new
ConCreateObserver;
Observer
*
p2
=
new
ConCreateObserver;
Subject
*
p
=
new
ConCreateSubject;
p
->
Attach(p1);
p
->
Attach(p2);
p
->
Setstate(
4
);
p
->
Notify();
p
->
Detach(p1);
p
->
Setstate(
10
);
p
->
Notify();
delete p;
system(
"
pause
"
);
return
0
;
}
posted on 2008-08-21 23:38
黑色天使
閱讀(842)
評(píng)論(1)
編輯
收藏
引用
所屬分類:
設(shè)計(jì)模式
FeedBack:
#
re: C++設(shè)計(jì)模式-Observer
2012-05-09 15:58 |
no7dw
ConCreateSubject::SetState(STATE nState);
STATE Subject::Setstate()
has a little typing error ,('S' should not a CAPical letter ) this error leads to ConCreateSubject::SetState NOT a virtual effect
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
相關(guān)文章:
decorator模式
MVC模式理解——當(dāng)年給我一個(gè)browser多好(轉(zhuǎn))
C++設(shè)計(jì)模式-趣解
C++設(shè)計(jì)模式-visitor
C++設(shè)計(jì)模式-Memento
C++模式-Iterator
C++設(shè)計(jì)模式-Observer
C++設(shè)計(jì)模式-Command
C++模式-FlyWeight
C++設(shè)計(jì)模式-ChainOfResponsibility
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
<
2008年8月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(2)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
C\C++(8)
Hacker(1)
STL
VC&MFC(4)
操作系統(tǒng)(1)
多進(jìn)程&多線程
流媒體開(kāi)發(fā)
內(nèi)存管理技術(shù)(2)
軟件工程(1)
設(shè)計(jì)模式(20)
數(shù)據(jù)結(jié)構(gòu)&算法(2)
網(wǎng)絡(luò)開(kāi)發(fā)(3)
隨筆檔案
2011年4月 (1)
2011年3月 (2)
2009年7月 (1)
2009年6月 (2)
2009年3月 (1)
2009年2月 (3)
2009年1月 (3)
2008年12月 (5)
2008年11月 (1)
2008年10月 (3)
2008年9月 (3)
2008年8月 (23)
文章檔案
2011年3月 (1)
2009年6月 (1)
2008年11月 (1)
搜索
最新評(píng)論
1.?re: C++設(shè)計(jì)模式-Observer
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--no7dw
2.?re: YUV格式詳細(xì)解釋與FFMPEG的關(guān)系
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--windsome
3.?re: 鍵盤過(guò)濾驅(qū)動(dòng)源代碼
@soul
再怎么懶也應(yīng)該自己實(shí)現(xiàn)一部分吧
--黑色天使
4.?re: 鍵盤過(guò)濾驅(qū)動(dòng)源代碼[未登錄](méi)
再怎么懶也該加上unload例程吧
--soul
5.?re: CHttpDownLoad Beta 1.0
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--tangxinfa
閱讀排行榜
1.?RGB、YUY2、YUYV、YVYU、UYVY與AYUV(轉(zhuǎn))(6739)
2.?YUV格式詳細(xì)解釋與FFMPEG的關(guān)系(4345)
3.?如何檢測(cè)內(nèi)存泄漏(轉(zhuǎn))(3921)
4.?memcpy的BUG(2747)
5.?內(nèi)存池技術(shù)學(xué)習(xí)筆記(2383)
評(píng)論排行榜
1.?CHttpDownLoad Beta 1.0(10)
2.?memcpy的BUG(5)
3.?事件模型SOCKET封裝(2)
4.?鍵盤過(guò)濾驅(qū)動(dòng)源代碼(2)
5.?C++設(shè)計(jì)模式-Observer(1)
Copyright ©2025 黑色天使 Powered By
博客園
模板提供:
滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲品质自拍
|
国产精品二区三区四区
|
午夜精品在线看
|
欧美freesex交免费视频
|
欧美日韩理论
|
米奇777在线欧美播放
|
欧美精品一区二区三区视频
|
在线欧美一区
|
欧美一级专区免费大片
|
欧美电影免费观看
|
久久人体大胆视频
|
国产欧美日韩三区
|
亚洲视频中文
|
国产精品第2页
|
一本色道久久综合亚洲二区三区
|
久久国产精品毛片
|
亚洲精品一二区
|
欧美精品一区在线发布
|
亚洲福利视频在线
|
久久久国产精品亚洲一区
|
午夜伦欧美伦电影理论片
|
欧美日韩在线视频一区
|
亚洲精品精选
|
亚洲一二三四久久
|
99riav国产精品
|
欧美精品v日韩精品v韩国精品v
|
在线观看成人小视频
|
亚洲欧美日韩成人高清在线一区
|
亚洲欧美日本国产有色
|
亚洲毛片在线
|
欧美视频在线一区
|
久久精品72免费观看
|
欧美一区二区三区在线观看视频
|
国产精品午夜在线观看
|
久久米奇亚洲
|
久久综合一区
|
亚洲黄色av一区
|
亚洲免费观看高清完整版在线观看
|
男女激情久久
|
亚洲最新在线
|
欧美一区二区视频观看视频
|
国内精品国产成人
|
亚洲精品资源美女情侣酒店
|
久久精品99国产精品
|
国产性色一区二区
|
国产精品久久久久久久电影
|
久久久99爱
|
久久se精品一区精品二区
|
一区国产精品
|
一区二区免费看
|
国产拍揄自揄精品视频麻豆
|
麻豆成人在线播放
|
欧美四级在线观看
|
久久精品一区二区三区中文字幕
|
久久久久久综合网天天
|
亚洲在线播放电影
|
欧美在线影院
|
亚洲美女中文字幕
|
久久精品99久久香蕉国产色戒
|
亚洲第一主播视频
|
日韩午夜视频在线观看
|
极品尤物久久久av免费看
|
亚洲国产婷婷香蕉久久久久久99
|
噜噜噜噜噜久久久久久91
|
精品1区2区
|
亚洲先锋成人
|
在线播放日韩
|
久久综合激情
|
亚洲黄色免费网站
|
欧美一区免费
|
先锋影院在线亚洲
|
国产精品久久久久久久久果冻传媒
|
亚洲婷婷在线
|
久久黄色影院
|
欧美一区二区日韩
|
欧美1区2区3区
|
亚洲欧美日本国产有色
|
欧美女主播在线
|
久久久久久91香蕉国产
|
欧美另类69精品久久久久9999
|
女同一区二区
|
国产日韩欧美电影在线观看
|
亚洲激情午夜
|
国内一区二区在线视频观看
|
欧美freesex交免费视频
|
欧美裸体一区二区三区
|
久久久久国产精品午夜一区
|
国产精品视频不卡
|
亚洲欧洲综合另类
|
好吊一区二区三区
|
久久成人这里只有精品
|
午夜精品久久久久久99热软件
|
欧美成人精品激情在线观看
|
久久av资源网
|
国产精品色婷婷久久58
|
亚洲激情偷拍
|
亚洲人成人77777线观看
|
久久精品视频在线看
|
亚洲欧美精品伊人久久
|
欧美精品一卡
|
亚洲视频在线视频
|
99re热精品
|
久久综合中文色婷婷
|
亚洲小说区图片区
|
欧美高清在线视频观看不卡
|
欧美aaa级
|
亚洲第一搞黄网站
|
久久久99国产精品免费
|
久久精品123
|
国产一区二区三区在线观看视频
|
欧美电影免费观看高清完整版
|
国产视频亚洲
|
亚洲一区在线播放
|
性欧美长视频
|
国产视频精品网
|
篠田优中文在线播放第一区
|
久久av资源网站
|
精品成人a区在线观看
|
久久精品国产亚洲一区二区
|
久久久精品999
|
国产夜色精品一区二区av
|
性久久久久久久
|
久久久久久高潮国产精品视
|
国产麻豆精品theporn
|
午夜天堂精品久久久久
|
男同欧美伦乱
|
日韩视频专区
|
欧美视频手机在线
|
欧美一区二区三区四区在线观看
|
伊人一区二区三区久久精品
|
久久久久青草大香线综合精品
|
久久综合色一综合色88
|
日韩网站在线观看
|
欧美三级午夜理伦三级中文幕
|
9i看片成人免费高清
|
久久精品夜色噜噜亚洲a∨
|
国产在线高清精品
|
牛牛精品成人免费视频
|
亚洲一区二区高清视频
|
久久久亚洲午夜电影
|
亚洲国产精品久久91精品
|
欧美日韩在线一二三
|
午夜在线一区
|
亚洲国产欧美另类丝袜
|
久久精品日产第一区二区
|
亚洲激情视频在线播放
|
欧美日韩综合在线
|
久久亚洲精品视频
|
99re亚洲国产精品
|
久久久精品999
|
亚洲自拍偷拍视频
|
影音先锋日韩资源
|
久久久精品视频成人
|
在线天堂一区av电影
|
久久精品国产2020观看福利
|
欧美激情一区二区三区成人
|
香蕉国产精品偷在线观看不卡
|
欧美中文在线观看国产
|
亚洲欧洲日韩综合二区
|
久久精品91久久香蕉加勒比
|
亚洲人体偷拍
|
国产美女诱惑一区二区
|
欧美日韩成人网
|
久久久777
|
久久人人97超碰国产公开结果
|
在线性视频日韩欧美
|
国模大胆一区二区三区
|
亚洲欧美日本视频在线观看
|
亚洲美女尤物影院
|
在线一区二区三区四区
|
玖玖玖免费嫩草在线影院一区
|
亚洲激情国产
|
亚洲人成人一区二区在线观看
|
久久久久久久久久久久久女国产乱
|
欧美日韩午夜
|
久久美女性网
|
欧美一级片在线播放
|
亚洲图片欧美午夜
|
这里是久久伊人
|
亚洲精品三级
|
亚洲精品久久视频
|
欧美激情片在线观看
|
欧美成人精品1314www
|
久久亚洲欧洲
|
免费看成人av
|
牛牛影视久久网
|
欧美www视频
|
欧美成人国产
|
亚洲国产欧美另类丝袜
|
99国产精品久久久久久久久久
|
欧美午夜精彩
|
国产精品观看
|
国产精品视频专区
|
国产日韩欧美精品一区
|
国产一区二区三区久久
|
一区在线影院
|
亚洲经典视频在线观看
|
亚洲美女视频在线观看
|
在线一区二区三区四区
|
午夜精品久久久久久久99水蜜桃
|