首页 > 代码库 > 工厂模式
工厂模式
工厂模式分为简单工厂模式和复杂工厂模式,前者是使用一个类来生成实例,通常是一个单体,后者是使用子类来决定一个成员变量是哪个类的具体实例,也就是简单工厂包含在复杂工厂之中。
//implements AjaxHandler,创建一个复杂的工厂来执行Ajax的一系列流程,里面包含了两个简单工厂var SimpleHandler = function(){};SimpleHandler.prototype = {//第一个简单工厂执行Ajax的创建,请求,发送。。。等 request:function(method,url,callback,postVars){ var xhr = this.createXhrObject(); xhr.onreadystatechange = function(){ if(xhr.readyState != 4) return; (xhr.status == 200) ? //定义了一个全局对象callback来执行对返回参数的应用 callback.success(xhr.responseText,xhr.responseXML): callback.failure(xhr.status); }; xhr.open(method,url,true); if(method != "POST") postVars = null; xhr.send(postVars); },//第二个简单工厂是根据不同的情创建XHR对象,不论什么情况他都能返回一个正确的XHR对象 createXhrObject:function(){ var methods = [ function(){return new XMLHttpRequest();}, function(){return new ActiveXObject(‘Msxml2.XMLHttp‘);}, function(){return new ActiveXObject(‘Microsoft.XMLHttp‘);} ]; for(var i = 0; i < 3; i++){ try{ methods[i](); }catch(e){ continue; } this.createXhrObject = methods[i](); return methods[i](); } throw new Error("Error!"); }}
window.onload = function(){ var myHandler = new SimpleHandler(); var callback = { success:function(responseText,responseXML){alert("Success:" + responseXML);}, failure:function(statusCode){alert("Failure" + statusCode);} }; myHandler.request(‘GET‘,‘innerHTML.xml‘,callback); };//当然根据不同的情况,callback也就不同了
工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。