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、使用情况:要依赖具体的环境创建相应的对象,在开发期间不能确定,并且创建的对象比较复杂。

你可能感兴趣的:(设计模式)