• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2009-04-23 10:03趙伍軍
    新媒體研究 2009年6期
    關(guān)鍵詞:設(shè)計模式

    趙伍軍

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

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

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

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

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

    二、Adapter和Facade模式

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

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

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

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

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

    Function createXMLHttpRequest()

    {

    var CXMLHttpRequest = false;

    if (window. XMLHttpRequest)

    {

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

    CXMLHttpRequest = new XMLHttpRequest();

    }

    else if(window.SctiveXObject)

    {

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

    try

    {

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

    }

    catch(e1)

    {

    try

    {

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

    }

    catch(e2)

    {

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

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

    }

    }

    }

    return CXMLHttpRequest;

    }

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

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

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

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

    三、總結(jié)

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

    參考文獻(xiàn):

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

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

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

    猜你喜歡
    設(shè)計模式
    “1+1”作業(yè)設(shè)計模式的實踐探索
    新媒體下的廣告設(shè)計教學(xué)改革與創(chuàng)新方法研究
    智慧圖書館環(huán)境下的融貫式服務(wù)設(shè)計模式研究
    信息化教學(xué)模式構(gòu)建研究
    設(shè)計模式在軟件設(shè)計中的運(yùn)用
    一種基于Android混合開發(fā)模式的軟件架構(gòu)設(shè)計
    設(shè)計模式對軟件可維護(hù)性影響的定量研究
    定制服裝的設(shè)計模式分析
    基于生產(chǎn)者/消費(fèi)者設(shè)計模式的連續(xù)音頻信號采集系統(tǒng)
    淺析基于問題的教學(xué)設(shè)計模式
    卢湾区| 花垣县| 靖江市| 板桥市| 榆社县| 宜黄县| 尖扎县| 辽宁省| 长沙县| 报价| 牙克石市| 宁化县| 高要市| 平谷区| 正定县| 繁峙县| 林西县| 大城县| 交口县| 仲巴县| 瑞昌市| 永丰县| 青田县| 乌兰浩特市| 石台县| 吉林省| 汶上县| 花垣县| 台东县| 叙永县| 桃江县| 炎陵县| 金塔县| 湖口县| 辽宁省| 泸州市| 仁布县| 甘德县| 邢台县| 全南县| 临沭县|