国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

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

2019-11-18 13:33:02
字體:
供稿:網(wǎng)友

一、簡介

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

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


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

圖表一MVC模式

二、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)通知)便會完全違反 MVC 的設(shè)計(jì)初衷。 MVC 模式的其中一個(gè)目的在于使模式獨(dú)立與視圖,然而不正確的理解和設(shè)計(jì)通知機(jī)制會導(dǎo)致模型和試圖的依靠性。

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

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

    圖表2 Observer模式

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

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

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

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

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

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

三、結(jié)束語

    MVC 模式的要害在于分離易變和不易變部分間的耦合性,所以在應(yīng)用 MVC 模式時(shí)一定要注重解耦才是要害,同時(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

 

作者:

蔡超,貴州大學(xué),計(jì)算機(jī)軟件與理論,碩士



發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凯里市| 永德县| 宁津县| 乌鲁木齐县| 苏州市| 黄大仙区| 西畴县| 柞水县| 沙坪坝区| 福鼎市| 辛集市| 安溪县| 高安市| 娄底市| 色达县| 平昌县| 杂多县| 台江县| 洪湖市| 灵璧县| 四平市| 四平市| 蒲江县| 内黄县| 临西县| 安仁县| 四子王旗| 芒康县| 泽州县| 海南省| 五台县| 德安县| 金平| 沂南县| 宝坻区| 镇沅| 西昌市| 临沂市| 石嘴山市| 临夏市| 神农架林区|