JS工场形式

工场形式定义:一个用于建立对象的接口,这个接口由子类决议实例化哪个类。该形式使一个类的实例化耽误到了子类。而子类能够重写接口要领以便建立的时刻指定本身的对象范例。

看不懂?没紧要,先看看下面的例子。

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);

再读读这句话:工场形式定义一个用于建立对象的接口,这个接口由子类决议实例化哪个类。该形式使一个类的实例化耽误到了子类。而子类能够重写接口要领以便建立的时刻指定本身的对象范例。

这下是否是清晰多了,还不懂,没紧要,多敲几遍,多看几遍,就懂了。

    原文作者:Asrocky
    原文地址: https://segmentfault.com/a/1190000004030819
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞