J2EE之巔

           

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

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

          蔡超

          1         MVC 簡介

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

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

           

           

          1.GIF
          圖表
          1 MVC 模式

          2         MVC 的通知機制

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

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

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

          2.GIF


          圖表2 Observer模式

          視圖實現(xiàn) Observer 接口,并向模型注冊,模型通過調(diào)用所維護的觀察者的實例調(diào)用 Update 方法來通知視圖進行刷新。可見, Observer 接口有效的實現(xiàn)了模型和視圖間的耦合性的分離。

           

           

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

           

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

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

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

           

           

          3         結(jié)束語

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

           

          【參考文獻】

          1.  Sun Microsystem J2EE BluePrints

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

           

          作者: 蔡超 

           

          posted on 2006-08-05 18:28 超越巔峰 閱讀(1282) 評論(0)  編輯  收藏 所屬分類: Design Pattern

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(12)

          隨筆分類(54)

          隨筆檔案(59)

          文章分類(2)

          文章檔案(1)

          相冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 东源县| 南漳县| 平顺县| 东乡| 玉溪市| 瑞安市| 黎城县| 巩义市| 绍兴市| 新邵县| 临泉县| 建水县| 墨江| 交口县| 井冈山市| 渭源县| 昌吉市| 朝阳区| 呼和浩特市| 西贡区| 芮城县| 鄂托克旗| 寿宁县| 三明市| 汤原县| 交口县| 内江市| 胶南市| 中西区| 工布江达县| 门源| 广丰县| 隆化县| 浦县| 逊克县| 湘乡市| 巴林右旗| 淄博市| 邵阳县| 三亚市| 大同市|