JS設(shè)計模式(二)

工廠方法模式

前言

前面的簡單工廠模式不再適用創(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ù)對象的基類。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容