首页 > 代码库 > 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设计模式之工厂模式