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

  • 相关阅读:
    冒泡排序python实现
    mysql主从配置
    函数当作参数传递
    使用xml.dom.minidom创建xml
    php得到所有的汉字
    Cannot load D:/phpenv/php/php548/php5apache2_2.dll错误解决
    php新特性 traits 简单方法复用
    【转】在 Windows 下为 PHP 5.4 安装 PEAR、PHPUnit 及 phpDoc2
    wxpython基础框架
    MFC中文档视图框架和文档模板之间的关系
  • 原文地址:https://www.cnblogs.com/shamoguying1140/p/3033002.html
Copyright © 2011-2022 走看看