• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發(fā)教程 > 詳細頁面

        IssuVision是怎樣完成觀察器模式的注冊與通知的

        IssuVision是怎樣完成觀察器模式的注冊與通知的

        更新時間:2022-04-29 文章作者:未知 信息來源:網絡 閱讀次數(shù):

        眾所周知,觀察器(Observer)模式的重點是對觀察器對象的注冊以及Subject狀態(tài)改變時對觀察器對象的消息通知。那么,在IssuVision(微軟智能客戶端的示例程序)中是如何實現(xiàn)這一點的哪?在此,我提出自己的看法,希望大家批評指正。

        在IssuVision中,系統(tǒng)定義了一個IssueSubject類,該類實現(xiàn)了Isubject接口,同時各觀察器對象都實現(xiàn)了Iobserver接口,該接口包括了一個Isubject對象。注冊和事件等級是在這里完成的:

        m_issueSubject = new IssueSubject(this.components);



        paneStaff.Subject = m_issueSubject;

        paneMiddle.Subject = m_issueSubject;

        paneRight.Subject = m_issueSubject;

        paneChart.Subject = m_issueSubject;

        paneConflict.Subject = m_issueSubject;



        系統(tǒng)先創(chuàng)建了一個IssueSubject類的實例,然后讓所有的觀察器對象共享這個實例,這樣就完成了注冊。但是,事情還沒有完,我們深入Subject的注冊操作,看看里面究竟發(fā)生了什么:

        paneMiddle的注冊:

        public ISubject Subject

        {

        set

        {

        m_subject = (IssueSubject)value;

        issueList.Subject = m_subject;

        m_subject.IssueDataChanged += new IssueSubject.IssueDataChangedEventHandler(this.Subject_IssueDataChanged);

        }

        }



        paneRight的注冊

        public ISubject Subject

        {

        set

        {

        m_subject = (IssueSubject)value;

        m_subject.PositionChanged += new IssueSubject.PositionChangedEventHandler(this.Subject_PositionChanged);

        m_subject.IssueDataChanged += new IssueSubject.IssueDataChangedEventHandler(this.Subject_IssueDataChanged);

        }

        }

        在這兩個注冊里,m_subject都指向了同一個IssueSubject對象,這能保證他們共享相同的數(shù)據(jù)源,同時把IssueSubject對象的事件處理程序掛接到了本觀察器的成員方法中。這就保證了IssueSubject對象觸發(fā)事件時,能夠把消息通知到本觀察器。更進一步,大家再看一下這兩個注冊方法里的兩行代碼:

        m_subject.IssueDataChanged += new IssueSubject.IssueDataChangedEventHandler(this.Subject_IssueDataChanged);



        m_subject.IssueDataChanged += new IssueSubject.IssueDataChangedEventHandler(this.Subject_IssueDataChanged);



        在這里,m_subject.IssueDataChange事件對應了兩個事件響應方法,這就保證了IssueDataChange事件發(fā)生時能同時通知多個觀察器對象,而且是只通知定購了該消息的對象。同樣,我們也很容易的為某個觀察器對象定購或取消定購某個特定的消息。



        通過以上介紹,我想大家應該明白了觀察器模式的注冊和通知方法了吧?如果上面有錯誤或不足的地方還請大家斧正。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 中国极品美軳免费观看| 亚洲AV女人18毛片水真多| 亚洲av无码乱码国产精品fc2| 亚洲精品国产精品乱码视色| 自怕偷自怕亚洲精品| 亚洲中文字幕乱码熟女在线| 女人裸身j部免费视频无遮挡| 久久久久久AV无码免费网站| 日韩高清免费在线观看| 亚洲第一精品在线视频| 国产精品亚洲专区无码WEB| 无码精品一区二区三区免费视频| 无码专区—VA亚洲V天堂| 99热在线免费播放| 久久久久亚洲AV成人网人人网站| 亚洲一级大黄大色毛片| 国产日韩久久免费影院| 特级淫片国产免费高清视频| 亚洲AV无码久久精品成人| 午夜影院免费观看| 亚洲综合精品第一页| 四虎影在线永久免费观看| 亚洲免费福利视频| 国产成人免费视频| 亚洲精品无码久久久久去q| 日韩人妻无码精品久久免费一| 亚洲导航深夜福利| 免费在线观看视频网站| 亚洲精品国产字幕久久不卡| 99ee6热久久免费精品6| 亚洲精华液一二三产区| 成全高清视频免费观看| 2022年亚洲午夜一区二区福利| 久久久久久99av无码免费网站 | 免费a级毛片无码a∨蜜芽试看| 亚洲欧美日韩一区二区三区 | a毛片免费观看完整| 凹凸精品视频分类国产品免费| 三年片免费高清版| 91在线亚洲综合在线| 四色在线精品免费观看|