首页 > 代码库 > javascript工厂模式
javascript工厂模式
工厂模式
设计工厂模式的目的是为了创建对象。它通常在类或者类的静态方法实现,具有下列目标:
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‘
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。