欧美特黄不卡,涩涩视频在线,成人国产精品一区二区网站,亚洲一区二区三区欧美

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

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

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

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

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

在IssuVision中,系統定義了一個IssueSubject類,該類實現了Isubject接口,同時各觀察器對象都實現了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;



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

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對象,這能保證他們共享相同的數據源,同時把IssueSubject對象的事件處理程序掛接到了本觀察器的成員方法中。這就保證了IssueSubject對象觸發事件時,能夠把消息通知到本觀察器。更進一步,大家再看一下這兩個注冊方法里的兩行代碼:

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



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



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



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

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

本類教程下載

系統下載排行

主站蜘蛛池模板: 云安县| 晋江市| 青龙| 招远市| 双江| 咸宁市| 木里| 滨海县| 武宣县| 九江市| 张家港市| 舟曲县| 石景山区| 通城县| 新竹县| 张北县| 普洱| 昂仁县| 武隆县| 遂平县| 海盐县| 丹寨县| 察哈| 仙游县| 新兴县| 凤冈县| 连州市| 衡水市| 巴彦县| 清新县| 洞头县| 福安市| 寻乌县| 肇州县| 嘉峪关市| 吉首市| 泰州市| 鲁甸县| 开原市| 关岭| 运城市|