<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"
//总之工厂模式说到底也只是一种模式,代码还是那些代码,我们只是用了一种好的方式让它们显得有条理,