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

隨筆 - 8, 文章 - 0, 評論 - 17, 引用 - 0
數據加載中……

觀察者模式(Subject/Observer)

定義:對象間的一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。 

功能:搜索數據庫,當有需要公布的數據將其用各種方式發送出去。
 
觀察者模式無疑能很好的做到上面的要求,無論要多少種方式,只要增加多個繼承之ITransfer接口的派生類即可,有很好的維護性。

以下是實際的應用.



//接口
//ITransfer.h
#pragma once

class ITransfer
{
public:
    
virtual bool DoTransfer(...= 0;
}
;


//FetionTransfer.h
#pragma once
   #include "Transfer.h"
class CFetionTransfer:public ITransfer
{
public:
    CFetionTransfer();
    
~CFetionTransfer();
    
bool DoTransfer(...);
private:
    ......
}
;


//MailTransfer.h
#pragma once
   #include "Transfer.h"
class CMailTransfer: public ITransfer
{
public:
    CMailTransfer();
    
 ~CMailTransfer();
    
bool DoTransfer(...);
private:
....
}
;


//TransferPool.h
#pragma once

#include 
"Transfer.h"
#include 
<vector>
using namespace std;

class CTransferPool
{
private:
    vector
<ITransfer*> vo;
public:
    
virtual ~CTransferPool();

    
void Login(ITransfer* po);

    
void Logout(ITransfer* po);
   
//向各成員廣播消息
    void Notify(...);
}
;

//TransferPool.cpp
#include "TransferPool.h"

CTransferPool::
~CTransferPool()
{
    vector
<ITransfer*>::iterator vi = vo.begin();
    
for (; vi != vo.end(); vi++)
    
{
                 if(*vi)
                    {
                        delete *vi;
                         *vi = NULL;
                    }

    }

}


void CTransferPool::Login(ITransfer* po)
{
    vo.push_back(po);
}


void CTransferPool::Logout(ITransfer* po)
{
    vector
<ITransfer*>::iterator vi = vo.begin();
    
for (; vi != vo.end(); vi++)
    
{
        
if (*vi == po)
            vo.erase(vi);
    }

}


void CTransferPool::Notify(...)
{
    vector
<ITransfer*>::iterator vi = vo.begin();
    
for (; vi != vo.end(); vi++)
    
{
        ITransfer 
*= *vi;
            
        (
*vi)->DoTransfer(...);
    }

}


void main
{
    CTransferPool
*m_pTranPool= new CTransferPool();
    
    CFetionTransfer 
*m_pFetionTran = new CFetionTransfer(...);
    CMailTransfer 
*m_pMailTran = new CMailTransfer(...);

    m_pTranPool
->Login(m_pFetionTran);
    m_pTranPool
->Login(m_pMailTran);
       
        
while(需要發送消息)
        
{
            m_pTranPool
->Notify();
        }


        
//釋放
          if(m_pTranPool)
        
{
            delete m_pTranPool;
            m_pTranPool 
= NULL;
        }


}

posted on 2008-08-29 15:49 YG 閱讀(1822) 評論(5)  編輯 收藏 引用 所屬分類: C/C++ & 設計模型

評論

# re: 觀察者模式(Subject/Observer)   回復  更多評論   

恩,受益匪淺,謝謝
2008-08-29 18:46 | 鄒從杰

# re: 觀察者模式(Subject/Observer)   回復  更多評論   

比《設計模式》上的例子容易理解些。
附上觀察者模式的定義:
定義對象間的一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。
2008-08-29 19:09 | ronliu

# re: 觀察者模式(Subject/Observer)   回復  更多評論   

唉,還是很麻煩很麻煩。。。。
2008-08-29 21:26 | 空明流轉

# re: 觀察者模式(Subject/Observer)   回復  更多評論   

不錯....
2008-08-30 15:25 | ci

# re: 觀察者模式(Subject/Observer)   回復  更多評論   

呵呵,以前做項目時用過這種模式,只是當時并不知道這就是觀察著模式,正可是“不知廬山真面目,只緣身在此山中”
2009-02-04 09:35 | nirvana
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区三区四区五区视频 | 亚洲国产网站| 国产精品美女| 国产精品jvid在线观看蜜臀| 欧美日韩在线综合| 欧美日韩一区在线| 欧美精品一区二区三区在线播放 | 免费的成人av| 欧美激情精品久久久久久久变态| 欧美成人综合| 国产精品www.| 国产欧美日韩视频| 国产一区二区欧美| 精品成人一区二区| 亚洲国产欧美国产综合一区| 亚洲国产欧洲综合997久久| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲国产一成人久久精品| 亚洲美女色禁图| 亚洲欧美视频在线| 玖玖玖免费嫩草在线影院一区| 奶水喷射视频一区| 一本久久a久久精品亚洲| 性色一区二区| 欧美成人性网| 国产日韩欧美电影在线观看| 在线日韩av| 亚洲欧美影音先锋| 母乳一区在线观看| 亚洲人体大胆视频| 夜夜狂射影院欧美极品| 欧美在线观看网址综合| 欧美99在线视频观看| 亚洲欧洲综合另类在线| 亚洲免费中文| 欧美激情一区二区三区在线| 国产午夜久久久久| 亚洲一区二区黄| 欧美福利视频网站| 久久本道综合色狠狠五月| 亚洲国产精品嫩草影院| 亚洲在线观看| 欧美激情久久久| 欧美一区二区三区视频在线| 欧美美女视频| 亚洲国产一区二区三区高清| 午夜精品一区二区三区在线视| 亚洲国产精品成人| 久久免费黄色| 红桃av永久久久| 午夜精品999| 99精品视频免费全部在线| 欧美a级在线| 韩国精品主播一区二区在线观看| 午夜精品影院| 亚洲欧美日韩精品| 国产精品综合色区在线观看| 亚洲天堂成人在线观看| 亚洲精品在线免费观看视频| 欧美成人xxx| 亚洲精品国产精品久久清纯直播 | 老司机凹凸av亚洲导航| 久久国产精品99国产精| 国产精品自拍视频| 午夜精彩视频在线观看不卡 | 久久网站热最新地址| 亚洲欧美影院| 国产日韩欧美日韩大片| 欧美一区二区三区在线看| 亚洲小说区图片区| 国产精品热久久久久夜色精品三区| 亚洲视频在线一区| 一区二区三区鲁丝不卡| 国产精品青草久久久久福利99| 亚洲欧美综合另类中字| 欧美视频日韩视频在线观看| 一本久久综合亚洲鲁鲁五月天| 亚洲国产三级| 国产精品久久久久av| 欧美一区二区三区啪啪 | 免费精品视频| 99在线热播精品免费99热| 老色批av在线精品| 亚洲第一网站| 亚洲美女色禁图| 国产欧美91| 欧美大片在线观看| 欧美日韩一区免费| 久色婷婷小香蕉久久| 欧美日韩国产经典色站一区二区三区| 亚洲天堂网在线观看| 欧美在线www| 亚洲欧洲日韩女同| 一区二区欧美国产| 激情成人亚洲| 亚洲一区二区视频在线| 久久国产手机看片| 免费一区二区三区| 一区二区三区高清视频在线观看| 国产精品高潮久久| 欧美成人精品不卡视频在线观看| 99视频精品在线| 老司机精品福利视频| 亚洲一二三区精品| 亚洲免费观看高清在线观看| 国产久一道中文一区| 欧美了一区在线观看| 久久综合九色综合欧美狠狠| 亚洲午夜国产成人av电影男同| 欧美成年视频| 久久久久久久一区二区| 亚洲欧美一区二区原创| 日韩网站在线看片你懂的| 黄色综合网站| 亚洲成人在线网站| 尤物九九久久国产精品的分类| 国产精品最新自拍| 黑人一区二区三区四区五区| 国产伦精品一区二区三区高清版| 奶水喷射视频一区| 欧美成人精品1314www| 欧美v日韩v国产v| 欧美国产日韩一区二区在线观看| 久久久国产精品一区二区中文| 久久er精品视频| 久久综合999| 欧美日韩精品久久| 国产一区二区三区在线观看视频| 国产三级欧美三级| 亚洲精品综合久久中文字幕| 一区二区三区久久久| 性欧美video另类hd性玩具| 久久亚洲影音av资源网| 日韩亚洲精品在线| 久久乐国产精品| 牛牛精品成人免费视频| 日韩午夜电影av| 久久精品1区| 欧美性做爰猛烈叫床潮| 亚洲国产精品一区二区第四页av | 一区二区精品国产| 久久久久九九九| 国产精品无人区| 宅男噜噜噜66一区二区| 欧美激情1区2区3区| 香蕉久久国产| 国产日韩精品久久久| 亚洲专区免费| 亚洲一区二区在线免费观看视频| 欧美大片免费观看在线观看网站推荐| 国产视频精品免费播放| 欧美在线观看www| 亚洲欧美国产制服动漫| 国产精品高潮在线| 亚洲一区二区三区在线看| 亚洲欧洲偷拍精品| 欧美成人福利视频| 亚洲午夜黄色| 亚洲欧美日韩另类| 黄色另类av| 最新国产拍偷乱拍精品| 欧美国产第二页| 99视频超级精品| 亚洲欧美自拍偷拍| 影音先锋久久精品| 亚洲国产成人午夜在线一区 | 亚洲人被黑人高潮完整版| 欧美日韩国产在线| 久久av在线看| 欧美三区免费完整视频在线观看| 午夜宅男久久久| 欧美a一区二区| 欧美一区二区三区四区在线观看地址 | 一区二区精品国产| 国产亚洲精品v| 亚洲黑丝一区二区| 国产欧美日韩综合| 亚洲激情在线| 狠狠久久婷婷| 亚洲午夜激情网页| 一个人看的www久久| 久久久噜噜噜久久| 久久精品国产第一区二区三区最新章节| 美女脱光内衣内裤视频久久网站| 亚洲欧美日韩精品在线| 欧美二区在线播放| 欧美激情一区二区三级高清视频| 国产女同一区二区| 午夜精品福利视频| 久久精品99无色码中文字幕| 国产精品二区在线观看| 亚洲一级二级| 久久xxxx| 在线观看欧美| 免费观看国产成人| 亚洲欧洲在线观看| 亚洲综合视频1区| 国产一区二区精品| 乱中年女人伦av一区二区| 欧美国产大片|