javascript的设计模式之工厂模式

 

 

<script type="text/javascript">
//这只是一个大概的演示了工厂模式的原理,

//这个是Car的构造函数
function Car(){
  this.type='car';//为Car定义了一个属性type下面要用
}
//在Car的原型上添加了一个方法say用来输出打印一句话
Car.prototype.say=function(){
  console.log("我是"+this.type);
}
//这个是Bike的构造函数
function Bike(){
  this.type='bike';//为Bike定义了一个属性type下面要用
}
//在Bike的原型上添加了一个方法say用来输出打印一句话
Bike.prototype.say=function(){
  console.log("我是"+this.type);
}
//这个是Motor的构造函数
function Motor(){
  this.type="motor";
}
//在Motor的原型上添加了一个方法say用来输出打印一句话
Motor.prototype.say=function(){
  console.log("我是"+this.type);
}
//上面的都是面向对象的基础,平时我们调用上面的类时都是直接new比如要创建Car的实例
//var car=new Car();
//car.say() 打印出"我是car";

//重点来了
//其实工厂模式也和上面的原理一样,不能说是原理一样,总之道理很简单,
//就像一个超市,能为你提供各种的商品;如果你想买个东西了,最快的方法就是去超市,因为你知道,超市集结了很多的商品,
//没准就会有你想要的;
var Factory={//Factory 就像那个超市
  createP:function(product){//你去超市去查找商品 或者你问了服务员,让她帮你找
      var p=null;
      switch(product){
        case "car":
          p=new Car();//创建Car的实例
          break;
        case "bike":
          p=new Bike();//创建Bike的实例
          break;
        case "motor":
          p=new Motor();//创建Motor的实例
          break;
        default://如果没有找到你想要的 就默认返回一个类的实例,当然也不是非得返回一个
          p=new Car();
          break;	
      }
      return p;//返回创建的实例
    }
}
var p=Factory.createP("motor");//调用工厂的createP方法
p.say();//打印出''我是motor"
//总之工厂模式说到底也只是一种模式,代码还是那些代码,我们只是用了一种好的方式让它们显得有条理,

 

  

 

posted @ 2017-05-24 15:36  一天前  阅读(196)  评论(0)    收藏  举报