<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE之巔

     

    關(guān)于MVC模式中的通知機(jī)制

    關(guān)于 MVC 模式中的通知機(jī)制

    蔡超

    1         MVC 簡(jiǎn)介

    一般應(yīng)用中用戶界面的變化相對(duì)較為頻繁 , 有時(shí)需要支持多種表現(xiàn)模式(如 WEB 客戶端和 GUI 客戶端),但是數(shù)據(jù)和業(yè)務(wù)邏輯相對(duì)保持穩(wěn)定。

    MVC(Model-View-Controller) 模式是一種常用的設(shè)計(jì)模式 ,MVC 將模型 , 顯示和控制進(jìn)行了分離,可以使得應(yīng)用更加方便實(shí)現(xiàn)對(duì)多種表現(xiàn)模式的支持及降低表現(xiàn)形式修改對(duì)整體系統(tǒng)的影響。由于本文重點(diǎn)討論的是 MVC 中的通知機(jī)制,至于 MVC 的其它內(nèi)容可以參考其它相關(guān)文檔。

     

     

    1.GIF
    圖表
    1 MVC 模式

    2         MVC 的通知機(jī)制

    上圖是在 SUN J2EE BluePrints 中關(guān)于 MVC 模式的描述 , 在實(shí)現(xiàn) MVC 模式時(shí)首先應(yīng)該注意的是模型與視圖之間的關(guān)系。在這些關(guān)系中尤其值得大家注意的是模型通知視圖,如果不能正確的設(shè)計(jì)這個(gè)通知機(jī)制(模型與視圖之間關(guān)聯(lián)實(shí)現(xiàn)通知)便會(huì)完全違背 MVC 的設(shè)計(jì)初衷。 MVC 模式的其中一個(gè)目的在于使模式獨(dú)立與視圖,然而不正確的理解和設(shè)計(jì)通知機(jī)制會(huì)導(dǎo)致模型和試圖的依賴性。

    2.1     采用 Observer 模式實(shí)現(xiàn)通知機(jī)制

    既要實(shí)現(xiàn)模式到視圖的通知機(jī)制,同時(shí)有要確保實(shí)現(xiàn)模型與視圖的分離。通常我們可以通過(guò)Observer模式來(lái)實(shí)現(xiàn)這樣的通知機(jī)制。

    2.GIF


    圖表2 Observer模式

    視圖實(shí)現(xiàn) Observer 接口,并向模型注冊(cè),模型通過(guò)調(diào)用所維護(hù)的觀察者的實(shí)例調(diào)用 Update 方法來(lái)通知視圖進(jìn)行刷新。可見(jiàn), Observer 接口有效的實(shí)現(xiàn)了模型和視圖間的耦合性的分離。

     

     

    2.2     模型通知視圖還是控制器通知視圖

     

    3.GIF
    圖表
    3 基于 MVC J2EE 應(yīng)用

    在將 MVC 模式應(yīng)用于的總體結(jié)構(gòu)時(shí),常常會(huì)有是模型通知視圖還是控制器通知視圖的問(wèn)題,其實(shí)我認(rèn)為這個(gè)問(wèn)題完全取決于對(duì)系統(tǒng)各個(gè)部分的劃分和理解,如果我們把模型層更多劃分為數(shù)據(jù)實(shí)體 ( 如: Entity Bean) 則可能會(huì)發(fā)現(xiàn),其實(shí)我們的通知機(jī)制是不能由模型部分來(lái)完成的,而是由我們的控制器來(lái)完成的。這種劃分好象有些違背了 MVC 模式,但實(shí)事上特別是一些想要同時(shí)支持 B/S C/S J2EE 應(yīng)用,控制器和模式通知機(jī)制常常有較大的耦合性( C/S 結(jié)構(gòu)中,客戶完全通過(guò)會(huì)話 Bean 來(lái)完成業(yè)務(wù)),可能有時(shí)在一起實(shí)現(xiàn)更好。

    總之,更好的內(nèi)聚性和更松散的耦合性才是架構(gòu)設(shè)計(jì)的重點(diǎn),應(yīng)該做出適合自身應(yīng)用的 MVC 架構(gòu)。

     

     

    3         結(jié)束語(yǔ)

    MVC 模式的關(guān)鍵在于分離易變和不易變部分間的耦合性,所以在應(yīng)用 MVC 模式時(shí)一定要注意解耦才是關(guān)鍵,同時(shí)一定要更據(jù)具體的使用環(huán)境進(jìn)行調(diào)整,不要生搬硬套,如 Microsoft MFC 采用的 Document-view 就是 MVC 的變體,它把控制器合并到視圖中,這是因?yàn)榭紤]了視圖與控制器緊耦合的影響。

     

    【參考文獻(xiàn)】

    1.  Sun Microsystem J2EE BluePrints

    2.  GOF,Design Patterns, 機(jī)械工業(yè)出版社, 2002

     

    作者: 蔡超 

     

    posted on 2006-08-05 18:28 超越巔峰 閱讀(1277) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Design Pattern

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(12)

    隨筆分類(lèi)(54)

    隨筆檔案(59)

    文章分類(lèi)(2)

    文章檔案(1)

    相冊(cè)

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲第一极品精品无码久久| 国产精品深夜福利免费观看| 亚洲精品~无码抽插| 国产精品亚洲专区无码牛牛| 午夜一级毛片免费视频| 亚洲男人天堂2022| 成人免费毛片观看| 亚洲免费综合色在线视频| 日韩毛片免费在线观看| 欧洲亚洲国产精华液| 免费国产a国产片高清| 一级毛片大全免费播放| 亚洲午夜久久久影院| 成人黄网站片免费视频| 亚洲日本一区二区三区| 日本免费xxxx| 亚洲高清一区二区三区电影| 无码欧精品亚洲日韩一区夜夜嗨| 免费福利在线观看| 国产亚洲精AA在线观看SEE| 日韩免费观看一区| 亚洲人成高清在线播放| 大香人蕉免费视频75| 全部在线播放免费毛片| 亚洲va无码手机在线电影| 精品成在人线AV无码免费看 | 亚洲国产中文字幕在线观看| 中文字幕久无码免费久久| 337p欧洲亚洲大胆艺术| 免费看韩国黄a片在线观看| 日本激情猛烈在线看免费观看| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 女性无套免费网站在线看| 女bbbbxxxx另类亚洲| 久久亚洲国产欧洲精品一| 69成人免费视频| eeuss免费天堂影院| 亚洲一卡2卡4卡5卡6卡残暴在线| 免费亚洲视频在线观看| 91免费国产精品| 久久精品国产亚洲AV未满十八|