什么是工厂模式?

定义一个创建对象的接口,让这个接口决定实例化哪个对象

使用场景:需要依赖具体环境生成不同的类

1.简单工厂模式

  接口类:

  function interface (){}

  //如果将工厂类的方法定义在此处,需要扩展的时候就会连同接口类一起改动,形成耦合

  interface.prototype.getNewType=function(type){

    var obj =  factory.createType(type);

      return obj;//如果多个类之间有共同的方法,定义在interface.prototype里,这里就可以用this.XXX.call(obj);

  }

  工厂类:

  var factory = {

    createType : function(type){

      var newObj;

      switch(type){

        case "one" :

          newObject = new One();

          break;

        

         case "two" :

          newObject = new Two();

          break;

        ········

 

      }

      return newObj;

    }

  }

  使用:

  var i = new interface();

  var obj = i.getNewType("one');