首页 > 代码库 > javascript设计模式之工厂模式
javascript设计模式之工厂模式
/* * 工厂模式 * 需要依赖具体环境创建不同实例 * 处理大量具有相同属性的小对象 * * 比如汽车、不同类型的汽车 * source from: JavaScript Patterns page 148 **/function CarMaker() {};// 通用方法CarMaker.prototype.drive = function () { return "Vroom, I have "+ this.doors + " doors.";};// 定义静态工厂方法CarMaker.factory = function (type) { var constr = type, // 个性化的汽车工厂 newcar = null; // 生产出的car对象 // 如果构造函数不存在,则发生错误 if (typeof CarMaker[constr] !== "function") { throw { name: "Error", message: constr + " does not exist." }; } // 原型继承父类,但仅继承一次 if (typeof CarMaker[constr].prototype.drive !== "function") { CarMaker[constr].prototype = new CarMaker(); } // 创建一个新的实例,并返回 newcar = new CarMaker[constr]; return newcar;};// 定义特定的汽车制造商CarMaker.Compact = function () { this.doors = 4;};CarMaker.SUV = function () { this.doors = 8;};// 应用var compactCar = CarMaker.factory("Compact"), suvCar = CarMaker.factory("SUV");console.log(suvCar.drive()); // Vroom, I have 8 doors.
javascript设计模式之工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。