js设计模式(2)---工场模式
0.前言
看了一个下午的工场模式,晚上就总结一下,也算是一种成果吧。
1.工场模式的定义
工场模式分为简单工场模式和复杂工场模式,为了动态创建对象。
2.分类
2.1简单工场模式
简单工场模式是通过定义一个方法,根据参数(或条件)的不同来创建相应的对象。
View Code
View Code
1 var XHR = { 2 createXHR:function(){ 3 var methods = [ 4 function(){return new XMLHttpRequest();}, 5 function(){return new ActiveXObject('Microsoft.XMLHTTP');} 6 ]; 7 for(var i=0, len=methods.length;i<len;i++){ //根据浏览器的不同进行选择 8 try{ 9 methods[i](); 10 }catch(e){ 11 continue; 12 } 13 this.createXHR = methods[i]; 14 return methods[i]; 15 } 16 throw new Error('can't create XHR'); 17 } 18 }
2.2 复杂工场模式
该模式定义一个创建对象的接口,然后由子类来决定来实例化哪个类。使一个类的实例延时到了子类。就好比先生产出一双运动鞋,至于具体是什么名字的,再由具体品牌商决定。
View Code
1 var shoes = { 2 createBrands: function(model){ 3 throw new Error('error'); 4 } 5 } 6 7 var nikeShoes = { 8 createBrands:function(name){ 9 var shoe; 10 switch(name){ 11 case 'Nike 1':shoe = new Nike1();break; 12 case 'Nike 2':shoe = new Nike2();break; 13 default : shoe = new Nikes(); 14 } 15 return shoe; 16 } 17 } 18 19 var antaShoes = { 20 createBrands:function(name){ 21 var shoe; 22 switch(name){ 23 case 'anta 1':shoe = new Anta1();break; 24 case 'atta 2':shoe = new Anta2();break; 25 case 'atta 3':shoe = new Anta3();break; 26 default : shoe = new Antas(); 27 } 28 return shoe; 29 } 30 }
3.个人总结
1、工场模式分为简单工场模式和复杂工场模式
2、简单工场模式是根据参数的不同来具体确定到底要实例化那一个类;
3、复杂工场模式是把实例化工作交给子类来完成,父类只是相当于一个接口
4、使用情况:要依赖具体的环境创建相应的对象,在开发期间不能确定,并且创建的对象比较复杂。