青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

蝸牛的家
男兒當自強
posts - 48,  comments - 21,  trackbacks - 0
意圖:
定義對象間的一種一對多的依賴關系,當一個對象的狀態發生變化時,所有依賴于它的對象都得到通知并被自動更新
UML圖:

適用
當一個抽象模型有兩個方面,其中一個方面依賴于另一方面。將這兩者封裝在獨立的對象中以使他們可以各自獨立地改變和復用
當對一個對象的改變需要同時改變其他對象,而不知道具體有多少對象待改變
當一個對象必須通知其他對象,而他又不能假定其他對象是誰。換言之,你不希望這些對象是緊密耦合的
//test.h
#include <list>

typedef 
int STATE;
using namespace std;
//////////////////////////////////////////////////////////////////////////
class Observer;

class Subject
{
public:
    Subject() : m_nSubjectState(
-1){}
    
virtual ~Subject();
    
    
void Notify();  //通知對象改變狀態
    void Attach(Observer *pObserver);  //新增對象
    void Detach(Observer *pObserver);  //刪除對象
    
    
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//更新狀態
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); //更新鏈表中所有對象的狀態
    }

}


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 
*= 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) 評論(1)  編輯 收藏 引用 所屬分類: 設計模式

FeedBack:
# re: C++設計模式-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  回復  更多評論
  

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜精品国产更新| 国产精品视频一区二区高潮| 伊人男人综合视频网| 亚洲国产激情| 欧美激情一二三区| 久久久久.com| 亚洲大胆在线| 国产欧美日韩综合一区在线观看| 亚洲第一级黄色片| 在线观看视频一区| 99精品视频免费观看视频| 国产自产在线视频一区| 亚洲色图在线视频| 国产日韩欧美中文在线播放| 欧美黑人国产人伦爽爽爽| 欧美日本高清| 亚洲丰满在线| 狠狠操狠狠色综合网| 午夜精品国产精品大乳美女| 亚洲天天影视| 国产精品国内视频| 欧美一区二区黄| 亚洲摸下面视频| 欧美成人午夜激情| 午夜天堂精品久久久久| 欧美 日韩 国产 一区| 中国亚洲黄色| 国产精品久久久久秋霞鲁丝| 亚洲人永久免费| 午夜精品久久久久久久| 韩国一区电影| 噜噜噜在线观看免费视频日韩| 亚洲一级黄色片| 国产精品一区二区三区免费观看 | 麻豆精品91| 国产精品毛片a∨一区二区三区|国 | 尹人成人综合网| 久久综合五月| 欧美成人一区在线| 欧美福利一区| 激情综合色丁香一区二区| 免费视频一区| 男女精品网站| 欧美一区二区日韩| 久久免费午夜影院| 亚洲精品少妇| 欧美一级成年大片在线观看| 欧美一区二区在线| 欧美成人三级在线| 黑人巨大精品欧美一区二区小视频| 午夜视频在线观看一区二区三区| 久久天天躁夜夜躁狠狠躁2022| 欧美成人一区二区三区| 欧美大片免费| 欧美精品在线一区二区| 亚洲国产精品激情在线观看| 国产午夜精品美女毛片视频| 午夜精品久久久久久久99热浪潮 | 亚洲一区二区三区四区五区黄 | 亚洲欧美日韩成人| 亚洲精品免费在线| 国产一区清纯| 久久久久久久成人| 欧美一区久久| 亚洲区在线播放| 午夜免费在线观看精品视频| 亚洲国产黄色| 国产伦精品一区二区| 中国女人久久久| 国产亚洲第一区| 欧美高清视频在线观看| 国内精品久久久久影院优| 一区二区三区色| 亚洲一区二区三区高清不卡| 久久er精品视频| 欧美中文字幕| 国产乱码精品1区2区3区| 亚洲欧美偷拍卡通变态| 久久精品av麻豆的观看方式| 亚洲精品中文字幕有码专区| 欧美精品三级在线观看| 夜夜精品视频| 国产免费成人| 欧美99在线视频观看| 午夜精品在线看| 亚洲在线免费| 午夜精品亚洲一区二区三区嫩草| 亚洲最新合集| 在线亚洲欧美| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 在线视频欧美精品| 亚洲图片在线| 亚洲女性裸体视频| 欧美一区成人| 麻豆精品视频在线观看| 在线视频欧美精品| 欧美激情一区二区三区在线视频| 99亚洲伊人久久精品影院红桃| 免费国产一区二区| 亚洲福利久久| 亚洲一区二区三区成人在线视频精品| 欧美人交a欧美精品| 亚洲国产精品一区二区www在线| 日韩视频在线一区二区| 国产精品v欧美精品v日本精品动漫 | 一区二区三区欧美亚洲| 国产精品va在线| 国产欧美精品| 1024国产精品| 欧美日韩午夜| 亚洲砖区区免费| 在线亚洲高清视频| 男人的天堂成人在线| 一区二区三区你懂的| 国产专区综合网| 免费高清在线视频一区·| 亚洲一区二区三区777| 亚洲国产小视频| 老司机亚洲精品| 免费观看久久久4p| 99精品国产高清一区二区| 亚洲国产精品一区二区尤物区| 国产精品私人影院| 一区在线免费观看| 一本色道精品久久一区二区三区| 香蕉尹人综合在线观看| 亚洲电影免费观看高清| 99精品视频免费全部在线| 性欧美xxxx大乳国产app| 亚洲黄色小视频| 久久深夜福利免费观看| 国产日韩1区| 亚洲免费视频成人| 日韩午夜在线电影| 欧美精品一二三| 亚洲风情亚aⅴ在线发布| 久久久久.com| 欧美一区二区私人影院日本 | 亚洲人线精品午夜| 久久精品首页| 极品少妇一区二区三区| 久久久久国产精品午夜一区| 一本久久综合亚洲鲁鲁| 亚洲一区二区三区精品视频| 欧美日韩免费看| 亚洲在线观看免费视频| 一区二区久久| 国产精品一国产精品k频道56| 亚洲永久精品国产| 一区二区三区日韩在线观看| 国产精品久久久久久久久免费樱桃| 国产精品99久久99久久久二8 | 久久久亚洲高清| 亚洲国产mv| 亚洲美女av电影| 国产午夜精品在线观看| 免费成人激情视频| 欧美国产一区视频在线观看| 亚洲一二三四区| 久久国产福利| 99亚洲视频| 久久都是精品| 中文精品视频| 欧美综合77777色婷婷| 亚洲精品欧洲| 性欧美长视频| 夜夜嗨av色一区二区不卡| 亚洲一区二区三区在线观看视频 | 国产精品视频999| 美女精品在线| 国产精品www色诱视频| 老司机免费视频一区二区三区 | 亚洲第一成人在线| 一本久久综合亚洲鲁鲁五月天| 国产亚洲成精品久久| 亚洲激情av| 狠狠爱成人网| 亚洲免费婷婷| 亚洲影音一区| 欧美日韩成人在线播放| 亚洲片在线资源| 亚洲美女在线看| 性欧美超级视频| 老司机久久99久久精品播放免费| 亚洲四色影视在线观看| 欧美精品一卡| 亚洲国产欧洲综合997久久| 国产午夜亚洲精品理论片色戒| 99xxxx成人网| 一区二区三区日韩欧美精品| 美女国内精品自产拍在线播放| 久久精品九九| 国产日韩欧美不卡| 亚洲免费一级电影| 午夜一区二区三区不卡视频| 欧美日韩性生活视频| 亚洲精品在线二区| 99精品国产在热久久婷婷| 欧美黄色影院| 日韩网站在线观看|