javascript设计模式之工厂方法模式

75 阅读1分钟

工厂方法模式 安全模式类

var Demo = function() {
    // 安全模式类
    if(!(this instanceof Demo)) {
        return new Demo()
    }
}
Demo.prototype = {
    show: function () {
        console.log('成功获取')
    }
}
var d = new Demo();
d.show() // 成功获取
var d = Demo()
d.show() // 异常
Factory.prototype = {
    Java : function(content) {
    },
    Javascrtip : function(content) {},
    UI : function(content) {
        this.content = content
        (function(){
            var div = document.createElement('div')
            div.innerHTML = content;
            div.style.border = '1px solid red';
            document.getElementById('container').appendChild(div)
        })(content)
    },
}

var data = [
    {
        type:'javascript',content:'javascript那家强'
    }
]

/**
 * 安全工程方法
 */
 var Factory = function(type, content) {
    if(this instanceof Factory) {
        var s = new this[type](content)
        return s
    }else {
        return new Factory(type, content)
    }
 }

工厂原型中设置创建所有类型数据对象的基类


// 使用
for (var i = 6; i>= 0; i--) {
   Factory(s[i].type,s[i].content)
}

总结 通过工厂方法模式我们可以轻松创建多个类的实例对象,这样的工厂方法对象在创建对象的方法也避免了使用者与对象类之间的耦合。