JS 设计模式(简单工厂模式)

<!--引入的核心JS文件-->
<script type="text/javascript" src="CommonUtil.js"></script>
<script type=text/javascript charset=utf-8>
<!--JS设计模式(工厂模式)-->
//搭建一个工厂环境 卖车的店——卖车——生产车
//卖车店
function CarShop(){};
CarShop.prototype={
constructor:CarShop,
sellCar:function(type){//卖车方法
var car=CarFactory.createCar(type);
return car;
}
};
//生产车的工厂
var CarFactory={
createCar:function(type){
var car;//声明一个变量
switch(type){
case 'Benz':car=new Benz();break;
case 'Bmw':car=new Bmw();break;
case 'Audi':car=new Audi();break;
defanlt:'not buy it';
}
//检验接口实现
JALJA.Interface.ensureImplements(car,CarInterface);
return car;
}

};
var CarInterface =new JALJA.Interface("CarInterface",['start','run']);
//所有车的父类
function BaseCar(){};
BaseCar.prototype={
constructor:BaseCar,
start:function(){
alert(this.constructor.name + " :start");
},
run:function(){
alert(this.constructor.name +" :run");
}
}
//具体的车
function Benz(){};
//继承 --放在特有属性前面
JALJA.extend(Benz,BaseCar);
//定义自己特有的属性
Benz.prototype.driverBenz=function(){
alert("Benz 特有1");
};
function Bmw(){};
//继承 --放在特有属性前面
JALJA.extend(Bmw,BaseCar);
//定义自己特有的属性
Bmw.prototype.driverBmw=function(){
alert("Bmw 特有1");
};
function Audi(){};
//继承 --放在特有属性前面
JALJA.extend(Audi,BaseCar);
//定义自己特有的属性
Audi.prototype.driverAudi=function(){
alert("Audi 特有1");
};
//测试
var shop =new CarShop();
var car1=shop.sellCar('Audi');
car1.run();
car1.start();
car1.driverAudi();
var car2=shop.sellCar('Benz');
car2.run();
car2.start();
car2.driverBenz();
</script>

你可能感兴趣的:(简单工厂模式)