工廠方法模式
前言
前面的簡單工廠模式不再適用創(chuàng)建多類對象,所以就有了工廠方法模式,通地工廠方法模式可以輕松創(chuàng)建多個類的實例對象,這樣工廠方法對象在創(chuàng)建對象的方式也避免了使用者與對象類之間的耦合,用戶不必關(guān)心創(chuàng)建該對象的具體類,只需調(diào)用工廠函數(shù)方法即可。
<div id="container"></div>
var Factory = function(type, content){
debugger
if(this instanceof Factory){
var s = new this[type](content);
return s;
}else{
return new Factory(type,content);
}
}
Factory.prototype = {
Java:function(content){
this.content = content;
(function(){
var div = document.createElement('div');
div.innerHTML = content;
div.style.background = 'red';
document.getElementById('container').appendChild(div);
})(content)
},
Php:function(content){
this.content = content;
(function(){
var div = document.createElement('div');
div.innerHTML = content;
div.style.color = 'yellow';
document.getElementById('container').appendChild(div);
})(content)
}
};
var data = [
{type:'Java',content:'Java是門好語言'},
{type:'Php',content:'PHP是世界上最好的語言'}
]
for(var i=data.length-1; i>=0; i--){
console.log(i)
Factory(data[i].type,data[i].content);
}
總結(jié)
工廠模式可以看作是一個實例化對象的工廠類,在工廠類內(nèi)部通過安全模式(即檢測對象是否為工廠函數(shù)的實例)防止因誤操作導(dǎo)致的this指向問題,如果判斷為是則直接調(diào)用,工廠函數(shù)的原型方法,判斷為否則實例化工廠函數(shù)。在工廠原型中創(chuàng)建數(shù)據(jù)對象的基類。