999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用觀察者模式實現自頂向下消息傳遞

2011-01-26 06:42:18肖永剛
文山學院學報 2011年6期
關鍵詞:校園方法系統

肖永剛

(文山學院計科系,云南文山663000)

校園中存在著許多的對象,例如校園、教師、學生等,這些對象代表著真實校園中的各種實體。在真實的校園中消息是這樣傳遞的,首先校園有了一個消息,它需要將這個消息通知教師,再由教師將這個消息通知學生。或者,教師有了一個消息,他需要將這個消息通知學生,但不必將這個消息通知校園。消息總是從較高的層次向較低的層次傳遞,不會反向的從較低的層次向較高的層次傳遞。這是一種自頂向下式的消息傳遞機制。

同樣的,在設計虛擬校園[1]時,也要實現這樣的一種消息傳遞方式。校園、教師和學生等對象構成了整個虛擬校園的基本元素。文章只介紹了這三者之間的消息傳遞機制,以簡化需要討論的問題。

觀察者模式[2]在對象之間定義了一種一對多的依賴關系。當一個對象(發布者)的狀態發生變化時,其它的對象(觀察者),會馬上感知或接受到這種變化,所以觀察者模式在開發虛擬校園時非常有用。對比兩種設計虛擬校園的方法,一種沒有使用觀察者模式,而只是基于組合原則來構建系統,另一種應用了觀察者模式來設計開發虛擬校園,在校園、教師和學生三個對象之間建立起一對多的依賴關系。文章用對比的方式來說明應用觀察者模式設計帶來的好處[3]。

1 初始的設計

類圖如圖1所示,校園、教師和學生通過組合的方式聯系在一起,組合原則廣泛地應用于這個設計中。Campus類包含一個實體變量teachers,用來代表教師對象,即消息要傳遞給誰。Teacher類包含一個實體變量students,代表學生對象,即要繼續將消息傳遞給誰。三個類之間通過變量teachers和變量students進行訪問。

圖1 應用組合方式構建的系統

序列圖[4]如圖2所示,系統生成參與消息傳遞的對象,分別屬于 Campus、Teacher和 Student類。在對象內部已經指定了消息的發送者和接受者,在系統運行的過程中不會也不能更改它們。首先Campus類產生一個消息并將它傳遞給Teacher類,通過調用Campus類的broadcast方法實現。然后Teacher類接受這個消息并將它傳遞給Student類,通過調用Teacher類的 receiveMessage和 broadcast方法實現。最后Student類接受這個消息,通過調用Student類的receiveMessage方法實現。這樣的方式可以實現消息的自頂向下的傳遞,滿足系統設計的要求。

圖2 應用組合方式時的序列圖

但是這種設計方式有它的不足之處。一方面,當要擴展虛擬校園的功能時,比方說增加一些對象,這些對象同樣要參與到消息傳遞的過程當中,此時就需要對已有類的定義代碼進行修改,定義更多的實體變量來代表新加入的對象。當加入到系統中的對象越來越多時,這種修改的工作量將變得很大。產生錯誤的幾率也隨之增加,系統的可維護性變得很差。另一方面,這個設計中沒有提供一種靈活的更改消息發送或接受對象的方法。在系統運行時,不能動態的將對象加入到消息傳遞過程中,或從消息傳遞過程中將對象移除,因為這些都是在類的定義中預先指定了的。通過這種方式設計的系統缺少靈活性。

2 改進的設計

應用觀察者模式重新設計了虛擬校園,系統在可擴展性和靈活性上都獲得很大的提高,類圖如圖3所示,Campus類是發布者;Teacher類有兩個身份,既可以是發布者又可以是觀察者,Student類只能作為觀察者。當Campus類或者Teacher類發送消息時,它們相應的觀察者將會收到消息。采用這樣的設計方式,整個系統的靈活性得到了提高。只要一個對象實現了發布者接口,它就可以是發布者,不管這個對象實際上是做什么的[5]。同樣,只要一個對象實現了觀察者接口,它就可以是觀察者。所以,當要擴展系統功能時,可以很方便地添加一些實現了這兩種接口的類,而不需要對已有的類進行修改。唯一需要保證的是,這些類實現了相應的接口。

圖3 應用觀察者模式構建的系統

虛擬校園系統在校園、教師和學生之間建立了兩個一對多的依賴關系。一個是Campus類與Teacher類,Teacher類依賴Campus類傳遞消息;另一個是Teacher類與 Student類,Student類依賴 Teacher類傳遞消息。Teacher類扮演了兩種身份,既是消息的接受方又是消息的發送方。

在Subject接口中,方法attach用來注冊觀察者,detach用來注銷觀察者,方法notify用來通知觀察者;在Observer接口中,方法receiveMessage用來接受消息。在Campus類中,變量observers用來代表消息的觀察者列表,方法getMessage用來產生新的消息;在Teacher類中,變量observers用來代表消息的觀察者列表,變量campus用來代表消息的發布者,方法getMessage用來產生新的消息;在Student類中,變量campus用來代表消息的發布者,方法get-Message用來產生新的消息。

序列圖如圖4所示,當Campus類傳遞消息之前,它需要調用attach和detach方法決定消息由誰接受。一旦產生一條消息,它首先將這條消息傳遞給Teacher類,Teacher類收到消息后,也需要調用attach和detach方法決定消息由誰接受,再將這條消息傳遞給Student類。這樣,通過動態的注冊和注銷觀察者,以及利用不同對象之間方法的依次調用,實現了消息自頂向下的傳遞。

圖4 應用觀察者模式時的序列圖

3 結論

總體來看,應用設計者模式的優點大于缺點。首先,系統獲得良好的可擴展性,可以很容易的向系統中添加新的對象,需要做的只是要那些新加入的對象實現Subject接口或Observer接口,然后,可以在需要它們進行消息傳遞的時候注冊到觀察者列表,在不需要進行消息傳遞的時候注銷出觀察者列表。其次,對于本系統中參與消息傳遞的對象,因為發布者和觀察者之間并不存在很緊密的聯系,它們可以獨立地應用在其它的系統中。對其中某個對象的復用不受到另外對象的影響或限制。最后,如果對某個對象進行了修改,不會影響其它的對象,不需要修改已有的對象。所以,采用了觀察者模式重新設計以后,系統獲得了良好的可擴展性和靈活性,有利于系統的修改和維護。

可以看到,重新設計以后將會帶來更多的接口和方法。每個發布者或接受者都需要某個接口去定義。但是對于一個項目來說,這可能會帶來管理上的困難,因為跟蹤或維護這些類的工作量會增多。

[1] 劉巧紅.計算機虛擬校園的建造與人機交互的實現[J].計算機工程與設計,2006,(19):4332 -4335.

[2] Eric Freeman,Elisabeth Freeman,Kathy Sierra & Bert Bates.Head First Design Patterns[M].USA:O’reilly Media,2004:51.

[3] 廖志堅,蔣明亮.設計模式在廣東高新區產業地圖研究系統中的應用[J].科技管理研究,2011,(2):123-126.

[4] Dan Pilone& Russ Miles.Head First Software Development[M].USA:O’reilly Media,2007:436-437.

[5] Kathy Sierra& Bert Bates.Head First Java[M].USA:O’reilly Media,2007:226.

猜你喜歡
校園方法系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
校園的早晨
琴童(2017年3期)2017-04-05 14:49:04
春滿校園
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
開心校園
捕魚
主站蜘蛛池模板: 国产欧美视频综合二区| 亚洲人成影视在线观看| 国产黄色视频综合| 国产在线观看第二页| 无码网站免费观看| 2018日日摸夜夜添狠狠躁| 欧美成人精品高清在线下载| www.日韩三级| 免费三A级毛片视频| 99精品伊人久久久大香线蕉| 欧美自慰一级看片免费| 国产成人一区免费观看| 亚洲第一中文字幕| 亚洲最大看欧美片网站地址| 一本综合久久| 国产男人的天堂| 欧美第九页| 精品成人一区二区三区电影| 亚洲看片网| 亚洲午夜18| 久久久久九九精品影院| 国产精品网拍在线| 久久婷婷五月综合97色| 国产91av在线| 亚洲毛片一级带毛片基地| 午夜精品久久久久久久无码软件 | 国产二级毛片| 亚洲女人在线| 亚洲一级毛片免费看| 国产精品久久精品| 色久综合在线| 国产麻豆福利av在线播放| 国产成人一区二区| 久久这里只精品国产99热8| 99热6这里只有精品| 2022国产无码在线| 亚洲专区一区二区在线观看| 欧美精品不卡| 人妻一区二区三区无码精品一区| 动漫精品啪啪一区二区三区| 久久久久免费看成人影片| 日韩av无码精品专区| 亚洲天堂视频在线观看免费| 91小视频版在线观看www| 国产99在线| 日韩av手机在线| 日韩毛片免费| 在线免费不卡视频| 国产成人凹凸视频在线| 高h视频在线| 在线欧美一区| 婷婷中文在线| 久久国产精品影院| 国产激情在线视频| 91亚洲视频下载| 国产精品久久久久久搜索| 午夜高清国产拍精品| 中文字幕无线码一区| 美女亚洲一区| 中文字幕精品一区二区三区视频| 亚洲资源在线视频| 亚洲经典在线中文字幕| 久久无码av三级| 亚洲第一视频网| 天天摸夜夜操| 国产成人高清精品免费软件| 亚洲一区黄色| 国模粉嫩小泬视频在线观看| 亚洲黄色激情网站| 日韩精品一区二区深田咏美| 1级黄色毛片| a网站在线观看| 毛片免费在线视频| 国产99视频在线| 高清色本在线www| 亚洲欧美人成人让影院| 日韩av电影一区二区三区四区| 日韩欧美高清视频| 成人在线观看一区| 国产精品性| 成人福利视频网| 久久人午夜亚洲精品无码区|