<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<!-- 引入的核心js公共文件 -->
<script type=text/javascript charset=utf-8 src=../commons/../commons/CommonUtil.js></script>
<script type=text/javascript charset=utf-8> //分发到不同的4S店(类似于java的抽象类)
function CarShop(){};
CarShop.prototype = {
constructor : CarShop ,
sellCar:function(type){
// 销售人员...
//var car = CarFactory.createCar(type);
// 保险、相关的售后服务
//return car ;
this.abstractSellCar(type);
} ,
abstractSellCar: function(){
throw new Error('this method is abstract...');
}
}; // Benz 4s 店
function BenzCarShop(){};
BH.extend(BenzCarShop,CarShop);
BenzCarShop.prototype = {
constructor:BenzCarShop ,
sellCar:function(type){
var car ;
var types = ['Benz']; //输入参数校验
for(t in types){
// 如果我的商店里有你想要汽车型号
if(types[t] === type){
car = CarFactory.createCar(type);
} else {
alert('没有你要的型号!');
}
}
return car ;
}
}; // 宝马 4s 店
function BmwCarShop(){};
BH.extend(BmwCarShop,CarShop);
BmwCarShop.prototype = {
constructor:BmwCarShop ,
sellCar:function(type){
var car ;
var types = ['Bmw']; //输入参数校验
for(t in types){
// 如果我的商店里有你想要汽车型号
if(types[t] === type){
car = CarFactory.createCar(type);
} else {
alert('没有你要的型号!');
}
}
return car ;
}
}; //生产车的工厂 目的就是为了生产车
//单体模式 动态工厂模式
var CarFactory = {
createCar:function(type){
// var car = new Benz();,不需要做switch判断了
var car = eval('new '+type+'()');
//检验接口实现
BH.Interface.ensureImplements(car ,CarInterface);
return car ;
}
}; // 接口对象的实例
var CarInterface = new BH.Interface('CarInterface' ,['start','run']); // SuperClass implements CarInterface
function BaseCar(){};
BaseCar.prototype = {
constructor:BaseCar ,
start:function(){
alert(this.constructor.name + ' ..start');
},
run:function(){
alert(this.constructor.name + ' ..run');
}
}; function Benz(){};
BH.extend(Benz,BaseCar);
Benz.prototype.driveBenz = function(){alert('Benz..drive')};
//Benz.prototype.run = function(){alert('Benz..run')}; function Bmw(){};
BH.extend(Bmw,BaseCar);
Bmw.prototype.driveBmw = function(){alert('Bmw..drive')};
//Bmw.prototype.run = function(){alert('Bmw..run')}; function Audi(){};
BH.extend(Audi,BaseCar);
Audi.prototype.driveAudi = function(){alert('Audi..drive')};
//Audi.prototype.run = function(){alert('Audi..run')}; var shop = new CarShop();
var car = shop.sellCar('Benz');
car.start();
car.run();
car.driveBenz(); var car2 = shop.sellCar('Bmw');
car2.start();
car2.run();
car2.driveBmw(); var shop1 = new BenzCarShop();
var car1 = shop1.sellCar('Benz');
car1.run(); var shop2 = new BmwCarShop();
var car2 = shop2.sellCar('Bmw');
car2.run(); </script>
</head>
<body>
</body>
</html>

最新文章

  1. 提高 ASP.NET Web 应用性能
  2. 【iOS】WebView加载HTML图片大小自适应与文章自动换行
  3. Silverlight中使用MVVM:DataGrid中触发Button的Click事件
  4. svn 同步脚本
  5. JavaScript之setcookie()讲解
  6. Windows Phone 8仿Toast弹出通知。
  7. NodeJS + Socket.io聊天服务器连接数达到1024后就连不上了
  8. Bootstrap--组件之下拉菜单
  9. python 用pdb调试
  10. 什么是Solr搜索
  11. DOM 以及JS中的事件
  12. 志愿者招募 HYSBZ - 1061(公式建图费用流)
  13. linux命令:locate
  14. 浏览器编辑web页面的方法
  15. c语言条件编译和预编译
  16. 【js】正则表达式(II)
  17. useradd添加用户
  18. Mysql储存过程1: 设置结束符与储存过程创建
  19. 集大通APP案例分析
  20. Struts2笔记01——基础MVC架构(转)

热门文章

  1. 08-for循环
  2. openssl之BIO系列之6---BIO的IO操作函数
  3. [Python] Accessing Array Elements
  4. Cocos2d-x第三方类库不支持arm64的问题解决(64位架构)
  5. jsbrige
  6. Windows 7: Update is not applicable to your computer
  7. 仿即刻app&quot;猜你喜欢&quot;切换控件
  8. HDU 4358 Boring counting dfs序+莫队算法
  9. 分享一个tom大叔的js 深入理解系列 (有助于提升)
  10. docker升级&amp;加速器配置