快捷搜索:

javascript设计模式之工厂模式

在看本文章之前,建议先看看这篇文章javascript设计模式之单体模式 ,终究小我感到循规蹈矩的好。

工厂模式分为简单工厂模式和繁杂工厂模式,前者是应用一个类来天生实例,平日是一个单体,后者是应用子类来抉择一个成员变量是哪个类的详细实例,也便是简单工厂包孕在繁杂工厂之中。

下面经由过程一个详细的实例来详细的说说这工厂的一二吧。

用Ajax技巧提议异步哀求是现在web开拓中的一个常见义务。

1 //implements AjaxHandler,创建一个繁杂的工厂来履行Ajax的一系列流程,里面包孕了两个简单工厂

2 var SimpleHandler = function(){};

3

4 SimpleHandler.prototype = {

5 //第一个简单工厂履行Ajax的创建,哀求,发送。。。等

6request:function(method,url,callback,postVars){

7var xhr = this.createXhrObject();

8xhr.onreadystatechange = function(){

9if(xhr.readyState != 4) return;

10(xhr.status == 200) ?

11//定义了一个全局工具callback来履行对返回参数的利用

12callback.success(xhr.responseText,xhr.responseXML):

13callback.failure(xhr.status);

14};

15xhr.open(method,url,true);

16if(method != "POST") postVars = null;

17xhr.send(postVars);

18},

19 //第二个简单工厂是根据不合的情创建XHR工具,不论什么环境他都能返回一个精确的XHR工具

20createXhrObject:function(){

21var methods = [

22function(){return new XMLHttpRequest();},

23function(){return new ActiveXObject('Msxml2.XMLHttp');},

24function(){return new ActiveXObject('Microsoft.XMLHttp');}

25];

26for(var i = 0; i3; i++){

27try{

28methods[i]();

29}catch(e){

30continue;

31}

32this.createXhrObject = methods[i]();

33return methods[i]();

34}

35throw new Error("Error!");

36}

37 }

38

您可能还会对下面的文章感兴趣: