工厂模式也是Javascript比较常用的模式。
他主要是提供一个创建一系列相关或相互依赖对象的接口,而不一定要指定它们具体的类。
工厂模式的精髓在于可以选择类或函数等,通常是用来动态创建对象。
是不是看起来有点难懂?还是看代码吧。
//这是一个工厂模式例子(隐式选择)
function createXML(){
if(typeof XMLHttpRequest != "undefined"){
return new XMLHttpRequest();
}else if(typeof window.ActiveXObject != "undefined"){
return new ActiveXObject("MSXML2.XMLHttp");
}
}
var xmlHttp = createXML();
或许你之前也会这样创建过XHR对象,或许你之前不懂什么工厂模式。
原来就这样不知不觉地运用了工厂模式。
或者也可以作为类的方法:
var MainClass = function(){}; //主构造器
MainClass.prototype = {
FactoryMode:function(){}; //子类选择器
}
或者可以选择类:
var selectClass = function(key){
if(key == 1){
return Class1;
}else if(key == 15){
return Class2;
}else{
return Class3;
}
}
或者选择配置:
function User(type){
if(type == "Admin"){
this.config = {};
}else if(type == "SuperAdmin"){
this.config = {};
}else{
this.config = {};
}
}
User.prototype = {
this.fontColor = this.config.fontColor;
this.fontSize = this.config.fontSize;
...
}