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

  • 相关阅读:
    前端mvc mvp mvvm 架构介绍(vue重构项目一)
    SPA页面缓存再优化二
    消除浏览器对input输入框的自动填充
    单页面系统的一些性能优化
    城市联动组件插件思想分析
    前端性能优化点总结
    ui-router 1.0以上的 $stateChangeStart
    (转) view视图的放大、缩小、旋转
    (转)代码中实现button
    objective-c 强弱引用、properties的学习
  • 原文地址:https://www.cnblogs.com/shamoguying1140/p/3033002.html
Copyright © 2020-2023  润新知