JavaScript之工厂模式
来源:互联网 发布:手机网络ip地址查询 编辑:程序博客网 时间:2024/05/23 17:41
JavaScript之工厂模式
/***************外js*********************///接口类,用来创建接口 var Interface = function (name) { if (arguments.length != 2) { throw new Error("创建的接口不符合标准,必须有两个参数,第二个参数是接口的方法"); } this.name = name; this.methods = []; var methods = arguments[1]; for (var i = 0; i < methods.length; i++) { this.methods.push(methods[i]); } } Interface.ensureImplements = function (obj) { if (arguments.length < 2) { throw new Error("要检查的接口必须传入接口对象的参数,所以参数的个数必须大于等于2") } for (var i = 1; i < arguments.length; i++) { var intObj = arguments[i]; if (intObj.constructor != Interface) throw new Error(intObj + "接口的对象不正确"); //检查方法是否符合要求 var cmethods = intObj.methods; for (var j = 0; j < cmethods.length; j++) { if (!obj[cmethods[j]] || typeof obj[cmethods[j]] != "function") throw new Error("必须实现:" + cmethods[j] + "这个方法"); } } };var ICar=new Interface("ICar",["assemble","wash","run"]);var Car = function(){};Car.prototype ={ assemble:function(){ alert("小车组装中"); }, wash:function(){ alert("小车清洗中"); }, run:function(){ alert("嘟嘟中"); }}var Truck = function(){};Truck.prototype ={ assemble:function(){ alert("大卡车组装中"); }, wash:function(){ alert("大卡清洗中"); }, run:function(){ alert("轰隆隆"); }}var HongYong = {};HongYong.CarFactory = { createCar:function(model){ var car; switch(model){ case "car": car =new Car(); break; case "truck": car =new Truck(); break; } Interface.ensureImplements(car,ICar); return car; }};var CarShop = function(){};CarShop.prototype = { sellCar:function(model){ var car =HongYong.CarFactory.createCar(model); car.assemble(); car.wash(); return car; }};var c=new CarShop().sellCar("truck");c.run();
0 0
- JavaScript之工厂模式
- javascript之工厂模式
- javascript对象之工厂模式
- javascript设计模式之工厂(Factory)模式
- javascript设计模式之工厂(Factory)模式
- javascript设计模式之工厂(Factory)模式
- javascript设计模式之工厂模式
- JavaScript设计模式之-----工厂模式
- javascript 对象创建 之 抽象工厂模式
- JavaScript面向对象之---工厂模式
- JavaScript 面向对象之工厂模式
- 05.Javascript设计模式之工厂模式----Factory
- javascript-工厂模式创建
- javaScript工厂模式分析
- Javascript中的工厂模式
- javascript工厂模式
- javascript工厂模式
- javascript工厂模式
- Android中输入法遮盖住输入框(EditText)问题
- Leetcode刷题记——16. 3Sum Closest(最接近的三个数的和)
- Linux之—网络通信(TCP)
- Androi组件Service的子类IntentService
- 一个通过smtp发送邮件的shell,带用户名密码
- JavaScript之工厂模式
- 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis
- NOIP模拟题[贪心][离散化][LIS]
- 洛谷 P1131 [ZJOI2007]时态同步
- hdu1042 N!(高精度水过)
- mysql遇到奇怪的问题
- [NOIP模拟][费马小定理][高精度]
- 1619-7 张良 十一月六号总结 [连续第三十七天]
- silverlight连接SQLite数据库,增删改查