• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      MVC一體化開發(fā)研究

      2009-06-22 03:41孔凡興
      新媒體研究 2009年20期

      孔凡興

      [摘要]針對(duì)傳統(tǒng)MVC設(shè)計(jì)模式的缺點(diǎn),結(jié)合結(jié)構(gòu)型模式中Facade,Bridge和Dynamic Proxy模式設(shè)計(jì)理念,提出一種分布式系統(tǒng)的優(yōu)化Mvc模型,并將該模型應(yīng)用到J2EE在線考試管理系中。實(shí)踐表明,優(yōu)化的MVC型在應(yīng)用中具有良好的可重用性和擴(kuò)展性。

      [關(guān)鍵詞]結(jié)構(gòu)型模式Facade Bridge MVC

      中圖分類號(hào):TP3立獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671--7597(2009)1020076--01

      設(shè)計(jì)模式是一套被反復(fù)使用、經(jīng)過(guò)驗(yàn)證的設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),是在某一情景下類似問(wèn)題的重復(fù)性解決方案。使用設(shè)計(jì)模式可改善代碼的可維護(hù)性和可重用性,讓開發(fā)者從一個(gè)更高的視角進(jìn)行設(shè)計(jì)思考。然而,面對(duì)新的更加復(fù)雜的應(yīng)用需求,迫切需要尋找和設(shè)計(jì)更有效的設(shè)計(jì)模式來(lái)指導(dǎo)應(yīng)用程序開發(fā)過(guò)程。

      Model-Yiew-Control(MVC)模式是目前國(guó)內(nèi)外較流行、高效的設(shè)計(jì)模式之一。然而傳統(tǒng)的MVC模式還存在一些不盡人意的地方,控制器與模型之間保持清晰的界限,不同層次之間的頻繁的通信會(huì)消耗大量的系統(tǒng)資源;每個(gè)控制器直接與業(yè)務(wù)邏輯相關(guān)聯(lián),當(dāng)業(yè)務(wù)邏輯改變時(shí),需改變與該業(yè)務(wù)相應(yīng)的控制器;對(duì)不同類型數(shù)據(jù)的低效率訪問(wèn),模型操作的接口不同,需要多次調(diào)用才能獲得需要的數(shù)據(jù)。為克服MVC模式以上的缺點(diǎn),結(jié)合Fa-cade,Bridge和Dynamic Proxy幾種典型模式各自的特點(diǎn)來(lái)改進(jìn)傳統(tǒng)MVC模式的不足,從而解決傳統(tǒng)MVC模式中信息通信資源消耗大、控制器與業(yè)務(wù)邏輯高耦合等缺點(diǎn),提高了系統(tǒng)的靈活性和開發(fā)效率。

      一、優(yōu)化的MVC設(shè)計(jì)模式

      (一)引入Facade模式思想

      問(wèn)題描述:由于MVC在不同程序邏輯之間要保持清晰的界限,因此在不同層次之間的通信會(huì)有性能上的損失,控制器與模型之間的回路信息會(huì)消耗大量的系統(tǒng)資源。

      Facade模式的思想是提供一個(gè)統(tǒng)一的高層次接口,使得子系統(tǒng)更容易調(diào)用。在Mvc模式中引入Facade模型,將復(fù)雜的業(yè)務(wù)邏輯分成多個(gè)子系統(tǒng),F(xiàn)acade模式采用Session Bean(會(huì)話Bean)作為較高邏輯提供統(tǒng)一的接口,將系統(tǒng)的業(yè)務(wù)邏輯集中,從而降低客戶端與服務(wù)器之間的耦合度,降低系統(tǒng)的復(fù)雜性。在分布式環(huán)境中Facade模型的引入為遠(yuǎn)程對(duì)象提供了粗粒度的訪問(wèn),減少客戶端與服務(wù)器之間頻繁的調(diào)用,提高了系統(tǒng)性能。

      (二)引入Bridge模式思想

      問(wèn)題描述:MVC中每個(gè)控制器直接與業(yè)務(wù)邏輯相關(guān)聯(lián),當(dāng)業(yè)務(wù)邏輯改變時(shí),需改變與該業(yè)務(wù)相關(guān)的控制器。Bridge的主要思想是將抽象與實(shí)現(xiàn)分離,使它們可以獨(dú)立地變化,當(dāng)僅使用Session Facade模式時(shí),客戶端與EJB(Enterprise Java Bean)層緊密的耦合,形成控制器和業(yè)務(wù)邏輯的強(qiáng)依賴關(guān)系。Bridge模式在抽象類和它的實(shí)現(xiàn)類之間提供一個(gè)分層,控制一個(gè)對(duì)象到另一個(gè)對(duì)象的訪問(wèn),因此,采用Bridge來(lái)創(chuàng)建中間構(gòu)件可以分離客戶端和Sesslon Bean之間耦合關(guān)系。在實(shí)際應(yīng)用,將同組業(yè)務(wù)邏輯設(shè)計(jì)成為抽象類,由具體的業(yè)務(wù)類邏輯來(lái)實(shí)現(xiàn),應(yīng)用Java反向映射機(jī)制,控制器使用XML分析器來(lái)根據(jù)不同的模塊配置進(jìn)行Bridge抽象類實(shí)例化,再調(diào)用其方法,而不需要知道它請(qǐng)求的具體行為。Bridge在抽象類與實(shí)現(xiàn)之間,起到了橋梁作用,使控制器和業(yè)務(wù)邏輯可以獨(dú)立變化。

      (三)引入Dynamio Proxy模式思想

      問(wèn)題描述:HVC中模型對(duì)不同類型數(shù)據(jù)訪問(wèn)效得需要的數(shù)據(jù)。DynamicProxy模式通過(guò)在運(yùn)行期構(gòu)建一個(gè)對(duì)接口的動(dòng)態(tài)實(shí)現(xiàn)類來(lái)對(duì)目標(biāo)對(duì)象的代理,它在對(duì)間提供一個(gè)接口層,控制一個(gè)對(duì)象到另一個(gè)對(duì)象訪問(wèn)。利用Dynamic Proxy模式定義訪問(wèn)不同數(shù)源的接口,針對(duì)數(shù)據(jù)源不同類型在實(shí)現(xiàn)的類中定不同數(shù)據(jù)源的訪問(wèn)方法,獲取和操作數(shù)據(jù),能同時(shí)持多個(gè)數(shù)據(jù)庫(kù)。這樣當(dāng)數(shù)據(jù)庫(kù)類型更換時(shí),不會(huì)及到商業(yè)邏輯代碼的大量修改。J2髓應(yīng)用中,Session Bean一般和客戶端應(yīng)用是一一對(duì)應(yīng),而和據(jù)庫(kù)聯(lián)系緊密的是Entity Bean(實(shí)體Bean),Proxy式實(shí)質(zhì)是在Entity Bean和數(shù)據(jù)源之間又多了一ProxyDAO的數(shù)據(jù)訪問(wèn)對(duì)象。Dynamic Proxy的引入系統(tǒng)的模型業(yè)務(wù)與數(shù)據(jù)存取分離,模型業(yè)務(wù)類只責(zé)數(shù)據(jù)的操作,不涉及具體的數(shù)據(jù)源,當(dāng)數(shù)據(jù)發(fā)生化時(shí),不影響系統(tǒng)的業(yè)務(wù)處理。

      二、典型的網(wǎng)絡(luò)應(yīng)用

      (一)應(yīng)用實(shí)例

      以J2EE架構(gòu)在線考試試卷管理系統(tǒng)為例來(lái)明采用優(yōu)化MVC的分布式應(yīng)用模型的優(yōu)點(diǎn)。圖的UML的序列圖表示該系統(tǒng)進(jìn)行試卷管理的業(yè)流程,實(shí)現(xiàn)標(biāo)準(zhǔn)化試卷資源的數(shù)據(jù)庫(kù)管理,試卷資的共享和快速分發(fā),為學(xué)生用戶提供在線測(cè)試功能。

      (二)具體的實(shí)現(xiàn)方法

      1以試卷管理為例,將考試系統(tǒng)中的添加試卷、查試卷等業(yè)務(wù)子系統(tǒng)提供一個(gè)基于工作流的接口,入Facade模式。通過(guò)PaperFacade會(huì)話Bean進(jìn)行業(yè)務(wù)邏輯封裝,簡(jiǎn)化了原系統(tǒng)設(shè)計(jì),實(shí)現(xiàn)示例如下。publicclass PaperFacade implements SessionBean。以本例中試卷申請(qǐng)業(yè)務(wù)為例,采用傳統(tǒng)MVC模式Controller必須與數(shù)據(jù)實(shí)體對(duì)象直接遠(yuǎn)程交互,進(jìn)行一次試卷申請(qǐng)至少需要2次遠(yuǎn)程調(diào)用,而加入Facade層后在一個(gè)事務(wù)中就可以完成,而且將訪問(wèn)的多個(gè)數(shù)據(jù)屬性封裝到一個(gè)對(duì)象中傳遞減少網(wǎng)絡(luò)傳輸資源消耗??梢?jiàn),通過(guò)Facade會(huì)話層實(shí)現(xiàn)對(duì)事務(wù)的管理,避免了分布式對(duì)象之間遠(yuǎn)程調(diào)用的資源消耗。減輕控制器的負(fù)擔(dān),從而降低控制器和模式耦合。

      2加入Bridge模式的Web應(yīng)用。針對(duì)控制器與業(yè)務(wù)方法之間過(guò)于緊密問(wèn)題,解決方法是將抽象類和它的實(shí)現(xiàn)部分放在不同的層次結(jié)構(gòu)。以試卷管理為例,將試卷管理分離成抽象類AbsAdmin和它的實(shí)現(xiàn)類^dminPaperImpl,業(yè)務(wù)操作類(增加、刪除試卷)擴(kuò)展AdminPaperlmpl,并實(shí)現(xiàn)具體的業(yè)務(wù)操作action方法。在AbsAdmin類中創(chuàng)建私有的AdminPaperImpl成員變量,在action方法調(diào)用adminimpl的業(yè)務(wù)方法。這樣就可以在控制器動(dòng)態(tài)決定具體執(zhí)行哪個(gè)業(yè)務(wù)方法,由具體的業(yè)務(wù)類進(jìn)行實(shí)例化RefinedAbstration類。

      抚顺县| 松原市| 巴里| 兰州市| 金门县| 彩票| 甘南县| 徐闻县| 阜新| 瑞安市| 浦北县| 土默特右旗| 遂宁市| 冀州市| 凤台县| 孟津县| 墨竹工卡县| 正定县| 龙井市| 泉州市| 新安县| 克东县| SHOW| 乳源| 威宁| 米林县| 八宿县| 荣昌县| 衡南县| 永定县| 兴城市| 龙里县| 广东省| 漳平市| 文化| 仪陇县| 定边县| 临湘市| 舟曲县| 临桂县| 扬中市|