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

javascript工厂模式

时间:2014-08-11 14:20:12      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   os   io   ar   cti   

工厂模式

设计工厂模式的目的是为了创建对象。它通常在类或者类的静态方法实现,具有下列目标:
1.在创建相似对象是执行重复操作
2.在编译时不知道具体类型(类)的情况下,为工厂客户提供一种创建对象的接口。
通过工厂方法(或类)创建的对象在设计上都继承了相同的父对象这个思想,它们都是实现专门功能的特定子类。有时候公共父类是一个包含了工厂方法的同一个类、

代码:

//父构造函数
function CarMaker(){};

CarMaker.prototype.drive = function(){
    return ‘Vroom, I have ‘ + this.doors +‘ doors‘;
};
//静态工厂方法
CarMaker.factory = function(type){
    var constr = type,
        newcar;

    //如果构造函数不存在,则发生错误
    if(typeof CarMaker[constr] !== ‘function‘){
        throw{    
            name : ‘Error‘,
            message : constr + "doesn‘t 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.Convertible = function(){
    this.doors = 2;
};
CarMaker.SUV = function(){
    this.doors = 24;
};

var corolla = CarMaker.factory(‘Compact‘);
var solstice = CarMaker.factory(‘Convertible‘);
var cherokee = CarMaker.factory(‘SUV‘);
console.log( corolla.drive() );  //结果为‘Vroom, I have 4 doors‘
console.log( solstice.drive() ); //结果为‘Vroom, I have 2 doors‘
console.log( cherokee.drive() ); //结果为‘Vroom, I have 24 doors‘

 

javascript工厂模式,布布扣,bubuko.com

javascript工厂模式

标签:style   blog   color   java   os   io   ar   cti   

原文地址:http://www.cnblogs.com/fengzekun/p/3904352.html

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