工厂方法模式(Factory Method):通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例。

//当需求在改变时,使用传统的简单工厂模式不仅要添加类,还要修改工厂函数。
//使用工厂方法模式,并且使用安全模式创建,防止不了解的开发人员忘记new。
//安全模式创建工厂类
var Factory = function(type,content){
    if(this instanceof Factory){
        var s = new this[type](content);
        return s;
    }else{
        return new Factory(type,content);
    }
}

//工厂原型中设置创建所有类型的数据对象的基类
Factory.prototype = {
    java:function(content){
        // ......
    },
    javascript:function(content){
        // ......
    },
    php:function(content){
        // ......
    },
    ui:function(content){
        this.content = content;
        (function(content){
            var div = document.createElement('div');
            div.innerHTML = content;
            div.style.border = '1px solid red';
            document.getElementById('container').appendChild(div);
        })(content)
    },
    ...
};

当以后需要添加其他类的时候,就直接在Factory工厂类的原型里就可以了

var data = [
    {type:'js', content:'js哪家强'},
    {type:'css', content:'css哪家强'},
    {type:'html', content:'html哪家强'},
    {type:'es6', content:'es6哪家强'}
]
for(var i=3;i>=0;i--){
    Factory(data[i].type,data[i].content);
}