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

淺析Ajax中常用的設(shè)計(jì)模式

2009-04-23 10:03:58趙伍軍
新媒體研究 2009年6期

趙伍軍

[摘要]Ajax是近幾年web應(yīng)用方面的熱點(diǎn)技術(shù),其應(yīng)用越來(lái)越廣泛。一般來(lái)說(shuō)傳統(tǒng)的web應(yīng)用中幾乎沒(méi)有使用設(shè)計(jì)模式,但在Ajax的開(kāi)發(fā)中卻涉及到了部分設(shè)計(jì)模式,就此內(nèi)容做一個(gè)簡(jiǎn)要的介紹和分析。

[關(guān)鍵詞]Ajax 設(shè)計(jì)模式 Adapter Facade

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

一、Ajax中使用設(shè)計(jì)模式的原因

盡管Ajax是現(xiàn)在Web技術(shù)發(fā)展的熱點(diǎn)之一,但仍然屬于Web應(yīng)用的范圍,而我們知道通常傳統(tǒng)的Web應(yīng)用中幾乎沒(méi)有使用設(shè)計(jì)模式,那么為何要在Ajax開(kāi)發(fā)中應(yīng)用設(shè)計(jì)模式?主要有依稀幾點(diǎn)原因:1.Ajax應(yīng)用中的JavaScript代碼越來(lái)越復(fù)雜,代碼庫(kù)的規(guī)模越來(lái)越大,需要一種有效組織代碼庫(kù)的手段;2.Javascript編程與其他服務(wù)器端編程語(yǔ)言(例如Java語(yǔ)言,C#語(yǔ)言等)相比過(guò)于靈活,更需要通過(guò)引入設(shè)計(jì)模式加以控制,使得代碼更加的健壯;3.Javascript支持面向?qū)ο蟮拈_(kāi)發(fā),為應(yīng)用設(shè)計(jì)模式提供了必要的基礎(chǔ);4.設(shè)計(jì)模式是面向?qū)ο箝_(kāi)發(fā)的精華,應(yīng)用設(shè)計(jì)模式可以實(shí)現(xiàn)良好的重用和靈活的架構(gòu)。

二、Adapter和Facade模式

在開(kāi)發(fā)Web應(yīng)用時(shí),我們都要面對(duì)一個(gè)問(wèn)題:如何保證Web應(yīng)用程序在不同的瀏覽器上都能正確的顯示。Web技術(shù)林立,大部分瀏覽器廠商的實(shí)現(xiàn)都或多或少地與這些標(biāo)準(zhǔn)存在差異。有的Web技術(shù)標(biāo)準(zhǔn)本身就很含糊,容易引起不同的解釋?zhuān)挥械臑g覽器廠商處于易用的目的,各自通過(guò)自己的方式來(lái)擴(kuò)展這些標(biāo)準(zhǔn)。這就造成了不同的瀏覽器之間的差異。

基于目前Web開(kāi)發(fā)的特點(diǎn),特別是客戶(hù)端Javascript腳本的開(kāi)發(fā),需要面對(duì)很多變化和跨平臺(tái)的挑戰(zhàn),所以,如果應(yīng)用Adapter和Facade模式,將會(huì)非常有益于提高我們軟件的可維護(hù)性,以及降低總體開(kāi)發(fā)成本。

(一)Adapter模式。Adapter模式是解決接口不一致的問(wèn)題。在實(shí)際的應(yīng)用程序中,有時(shí)候客戶(hù)端(這里指調(diào)用方)想要調(diào)用接口與實(shí)際上服務(wù)器端(這里指被調(diào)用方)所提供的接口不一致。出現(xiàn)這種情況,我們可能會(huì)有兩種選擇,一種是修改調(diào)用方或者被調(diào)用方的接口,使之相互適應(yīng)。另一種就是在調(diào)用方和被調(diào)用方之間加入一個(gè)適配器(Adapter),讓其隱藏兩者之間的差異。

在Ajax應(yīng)用中經(jīng)常用到的XMLHttpRequest對(duì)象,就是需要Adapter模式的一個(gè)很好的實(shí)例。XMLHttpRequest對(duì)象是非W3C(World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟)標(biāo)準(zhǔn),所以,盡管現(xiàn)有的較新的瀏覽器都支持該對(duì)象,但其具體實(shí)現(xiàn)是不一致的。在微軟的IE瀏覽器里,XMLHttpRequest是以ActiveXObject的樣式實(shí)現(xiàn)的。而在Mozilla瀏覽器里,其又以一種build-in對(duì)象的形式實(shí)現(xiàn)。

對(duì)于我們常用的應(yīng)用程序來(lái)說(shuō),我們并不關(guān)心這些實(shí)現(xiàn)細(xì)節(jié),而是如何能夠獲得一個(gè)可以供使用的XMLHttpRequest對(duì)象。獲得一個(gè)可用XMLHttpRequest對(duì)象的代碼如下所示:

Function createXMLHttpRequest()

{

var CXMLHttpRequest = false;

if (window. XMLHttpRequest)

{

//創(chuàng)建非IE瀏覽器中XMLHttpRequest對(duì)象

CXMLHttpRequest = new XMLHttpRequest();

}

else if(window.SctiveXObject)

{

//創(chuàng)建IE瀏覽器中的XMLHttpRequest對(duì)象

try

{

CXMLHttpRequest = new ActiveXObject (”Msxml2.XMLHTTP”);

}

catch(e1)

{

try

{

CXMLHttpRequest = new ActiveXObject (”Microsoft.XMLHTTP”);

}

catch(e2)

{

//不能創(chuàng)建XMLHttpRequest對(duì)象

alert('不能創(chuàng)建異步請(qǐng)求對(duì)象!');

}

}

}

return CXMLHttpRequest;

}

該文件中的try……catch語(yǔ)句幫助我們實(shí)現(xiàn)了跨平臺(tái)性,createXMLH

TtpRequest()函數(shù)封裝了與特定瀏覽器相關(guān)的創(chuàng)建XMLHttpRequest對(duì)象的方法,該函數(shù)便是一個(gè)Adapter。這段代碼實(shí)現(xiàn)了一個(gè)創(chuàng)建XMLHttpRequest

對(duì)象的統(tǒng)一接口,并通過(guò)委托(delegate)的機(jī)制,自動(dòng)幫助我們用各種方法在不同的平臺(tái)下實(shí)例化一個(gè)XMLHttpRequest對(duì)象。

(二)Facade模式。Facade實(shí)際上是理順系統(tǒng)間關(guān)系,降低系統(tǒng)耦合度的一個(gè)常用的辦法。有時(shí)候,我們的客戶(hù)端(調(diào)用方)所調(diào)用的子系統(tǒng)過(guò)于復(fù)雜。通常,調(diào)用方需要連續(xù)調(diào)用被調(diào)用方的多個(gè)服務(wù)才能完成某種特定的任務(wù)。每次調(diào)用方重復(fù)調(diào)用操作都非常麻煩,并且容易出錯(cuò),所以,我們需要提煉出一些經(jīng)常用到的操作,組合成一個(gè)接口。這樣,每次調(diào)用方需要該服務(wù)時(shí),僅需要調(diào)用該Facade接口,便可以輕松執(zhí)行某項(xiàng)特定任務(wù)。在Ajax中,當(dāng)需要用XMLHttpRequest;對(duì)象向服務(wù)器請(qǐng)求數(shù)據(jù)的時(shí)候,僅僅為了請(qǐng)求一次數(shù)據(jù)就需要五個(gè)步驟:1.建立XMLHttpRequest;對(duì)象;2.指定響應(yīng)處理函數(shù)函數(shù);3.用open方法設(shè)置請(qǐng)求方式,URL地址和請(qǐng)求模式;4.用send發(fā)送請(qǐng)求;5.監(jiān)視請(qǐng)求狀態(tài),并對(duì)相應(yīng)的狀態(tài)進(jìn)行響應(yīng)處理。

三、總結(jié)

本文針對(duì)設(shè)計(jì)模式在Ajax中的應(yīng)用,選取了Adapter和Facade兩種比較典型設(shè)計(jì)模式,對(duì)其進(jìn)行了簡(jiǎn)要的分析和介紹。在Ajax中還用到了其他一些設(shè)計(jì)模式,比如Observer模式、Command模式和Singleton模式,限于篇幅有限,在此不再作一一介紹。如有興趣,可以查詢(xún)相關(guān)資料。

參考文獻(xiàn):

[1]祝紅濤、劉海松、郝軍啟,Ajax從入門(mén)到精通,北京:電子工業(yè)出版社,2008.

[2]譚日森,Ajax技術(shù)的特點(diǎn)及發(fā)展前景,信息科學(xué),2007年21期.

[3]劉娜、鄭楠楠,認(rèn)識(shí)Ajax與Ajax的應(yīng)用,電腦開(kāi)發(fā)與應(yīng)用,2008年4期.

主站蜘蛛池模板: 亚洲永久免费网站| 91国内在线观看| 国产精品黑色丝袜的老师| 黄色网页在线播放| 欧美激情成人网| 在线观看国产黄色| 全午夜免费一级毛片| 国产不卡在线看| 亚洲欧美国产高清va在线播放| 九九九精品视频| 国产无人区一区二区三区| 国产成本人片免费a∨短片| 97国产在线观看| 亚洲国产日韩视频观看| 亚洲无码精品在线播放| 欧洲在线免费视频| 久青草免费视频| 亚洲成a∧人片在线观看无码| 99在线视频网站| 四虎影院国产| 99久久精彩视频| 欧美区一区| 99热这里都是国产精品| 久久毛片基地| 正在播放久久| 一本大道东京热无码av| 日韩福利在线观看| 久久综合伊人 六十路| 91毛片网| 不卡色老大久久综合网| 又黄又爽视频好爽视频| 亚洲AV一二三区无码AV蜜桃| 丁香亚洲综合五月天婷婷| 欧美在线黄| 国产激情国语对白普通话| 亚欧成人无码AV在线播放| 久久精品国产999大香线焦| 伊人久久久久久久久久| AV色爱天堂网| 国产成人毛片| 国产网站在线看| 又猛又黄又爽无遮挡的视频网站| 国模私拍一区二区| 91视频区| 久久国产乱子伦视频无卡顿| 久久久久夜色精品波多野结衣| AV在线麻免费观看网站| 激情乱人伦| 四虎国产精品永久在线网址| 97av视频在线观看| 久久久久国产一级毛片高清板| 亚洲成人精品在线| 国产在线观看人成激情视频| 无码AV高清毛片中国一级毛片| 亚洲无卡视频| 久久综合色视频| 国产精品污视频| 欧洲免费精品视频在线| AV在线天堂进入| 国产毛片片精品天天看视频| 国产日本一区二区三区| 免费看a级毛片| 国产精品亚洲一区二区三区z| av尤物免费在线观看| 婷婷99视频精品全部在线观看| 久草美女视频| 人妻中文字幕无码久久一区| 日本不卡在线视频| 波多野结衣一区二区三区88| 国产精品妖精视频| h网站在线播放| 日本一本正道综合久久dvd| 國產尤物AV尤物在線觀看| 久久国产精品波多野结衣| 日日碰狠狠添天天爽| 91亚洲国产视频| 国产精品视频第一专区| 九九热精品在线视频| 日韩欧美91| 欧美中文字幕一区| 免费亚洲成人| 无码粉嫩虎白一线天在线观看|