麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript設計模式之工廠模式

2019-11-17 03:53:22
字體:
來源:轉載
供稿:網友
 在看本文章之前,建議先看看這篇文章javascript設計模式之單體模式 ,畢竟個人感覺循序漸進的好。

工廠模式分為簡單工廠模式和復雜工廠模式,前者是使用一個類來生成實例,通常是一個單體,后者是使用子類來決定一個成員變量是哪個類的具體實例,也就是簡單工廠包含在復雜工廠之中。

下面通過一個具體的實例來具體的說說這工廠的一二吧。

Ajax技術發起異步請求是現在web開發中的一個常見任務。


1 //implements AjaxHandler,創建一個復雜的工廠來執行Ajax的一系列流程,里面包含了兩個簡單工廠
2 var SimpleHandler = function(){};
3
4 SimpleHandler.PRototype = {
5 //第一個簡單工廠執行Ajax的創建,請求,發送。。。等
6     request:function(method,url,callback,postVars){
7         var xhr = this.createXhrObject();
8         xhr.onreadystatechange = function(){
9             if(xhr.readyState != 4) return;
10             (xhr.status == 200) ?
11             //定義了一個全局對象callback來執行對返回參數的應用
12             callback.success(xhr.responseText,xhr.responsexml):
13             callback.failure(xhr.status);
14         };
15         xhr.open(method,url,true);
16         if(method != "POST") postVars = null;
17         xhr.send(postVars);
18     },
19 //第二個簡單工廠是根據不同的情創建XHR對象,不論什么情況他都能返回一個正確的XHR對象
20     createXhrObject:function(){
21         var methods = [
22             function(){return new xmlhttpRequest();},
23             function(){return new ActiveXObject('Msxml2.XMLHttp');},
24             function(){return new ActiveXObject('Microsoft.XMLHttp');}
25         ];
26         for(var i = 0; i < 3; i++){
27             try{
28                 methods[i]();
29             }catch(e){
30                 continue;
31             }
32             this.createXhrObject = methods[i]();
33             return methods[i]();
34         }
35         throw new Error("Error!");
36     }
37 }
38

看到這里,工廠模式大體就是對單體模式的進一步擴展和應用,上面的實例可以這樣來調用:


1 window.onload = function(){
2     var myHandler = new SimpleHandler();
3     var callback = {
4         success:function(responseText,responseXML){alert("Success:" + responseXML);},
5         failure:function(statusCode){alert("Failure" + statusCode);}
6     };
7     myHandler.request('GET','innerHTML.xml',callback);
8     
9 };//當然根據不同的情況,callback也就不同了

通過使用工廠模式而不是使用new關鍵字及具體的類,可以把所有的實例代碼集中到一個位置。

使用工廠模式,你可以先創建一個抽象的父類,然后在子類中創建工廠方法,從而把成員對象的實例化推遲到更專門的子類當中,他可以有效的防止代碼重復。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 特片网久久 | 国产免费一区二区三区网站免费 | 毛片在哪里看 | 男女做性免费网站 | 亚洲午夜天堂吃瓜在线 | 男女生羞羞视频网站在线观看 | 成人在线国产 | 久久精品视频免费 | 国产免费观看一区二区三区 | 成av人在线观看 | 哪里可以看免费的av | 黄色成人在线播放 | 色综合久久久久久久久久久 | 免费久久精品 | 免费av网站观看 | 99这里精品 | 在线观看一区二区三区四区 | 失禁高潮抽搐喷水h | 欧美成年性h版影视中文字幕 | 激情久久一区二区 | 好吊色37pao在线观看 | 91久久精品一二三区 | 精品一区二区三区免费毛片 | 亚洲成人伊人 | 国内精品久久久久久久影视红豆 | 国产无遮挡一区二区三区毛片日本 | 蜜桃91麻豆| 久久久久久久久久久久久久av | 91成| 91性视频| 一级黄色毛片子 | 中文字幕在线免费播放 | 午夜精品福利影院 | 欧美性生活久久 | 天海翼四虎精品正在播放 | 免费一级特黄毛片视频 | 国产一级毛片高清视频 | 日本韩国欧美一级片 | 免费人成在线播放 | 久久看视频 | 精品久久久久久久久久久久包黑料 |