工场形式定义:一个用于建立对象的接口,这个接口由子类决议实例化哪个类。该形式使一个类的实例化耽误到了子类。而子类能够重写接口要领以便建立的时刻指定本身的对象范例。
看不懂?没紧要,先看看下面的例子。
var produceManager = {};
produceManager.createProduceA = function(){
console.log("ProduceA");
}
produceManager.createProduceB = function(){
console.log("ProduceB");
}
produceManager.factory = function(type){
return new produceManager[type];
}
var produce = produceManager.factory("createProduceA");
假如不好明白,我们举个现实一点的例子。假定我们要在一个页面上插进去一些元素,但这些元素不确定,多是图片,多是链接,多是文本。我们须要定义工场类与子类(产品类)。
var page = page || {};
page.dom = page.dom || {};
//子函数:处置惩罚文本
page.dom.Text = function(){
this.insert = function(where){
var txt = document.createTextNode(this.url);
where.appendChild(txt);
};
};
//子函数:处置惩罚链接
page.dom.Link = function(){
this.insert = function(where){
var link = document.createElement("a");
link.href = this.url;
link.appendChild(document.createTextNode(this.url));
where.appendChild(link);
};
};
//子函数:处置惩罚图片
page.dom.Image = function(){
this.insert = function(where){
var im = document.createElement("img");
im.src = this.url;
where.appendChild(im);
};
};
//工场
page.dom.factory = function(type){
return new page.dom[type];
};
//test:
var o = page.dom.factory("Link");
o.url = "http://abc.com";
o.insert(document.body);
再读读这句话:工场形式定义一个用于建立对象的接口,这个接口由子类决议实例化哪个类。该形式使一个类的实例化耽误到了子类。而子类能够重写接口要领以便建立的时刻指定本身的对象范例。
这下是否是清晰多了,还不懂,没紧要,多敲几遍,多看几遍,就懂了。