码迷,mamicode.com
首页 > 编程语言 > 详细

javascript设计模式之工厂模式

时间:2014-10-15 13:46:30      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   java   sp   div   on   

/* 
 * 工厂模式
 * 需要依赖具体环境创建不同实例
 * 处理大量具有相同属性的小对象
 * 
 * 比如汽车、不同类型的汽车
 * 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设计模式之工厂模式

标签:style   blog   color   io   ar   java   sp   div   on   

原文地址:http://www.cnblogs.com/xiankui/p/4025847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!