javascript設計模式簡單介紹之【原廠模式】

來源:互聯網
上載者:User

原廠模式分為兩種,一種是簡單原廠模式。另一種稱之為原廠模式。

簡單原廠模式是使用一個外部的單體或者靜態方法來產生執行個體。

而原廠模式使用子類來決定內部成員要實現那個具體的類的執行個體。

原廠模式要求被具體實現的類,必須提供相同的介面。

下面我們將通過一段代碼來講述一個簡單原廠模式的實現。

function myMode(){}myMode.prototype = {  create:function(){    var mode = createmode.create(mode);    mode.xxx();//可以對返回的mode執行任何你想要的操作    return mode;  }}var createdmode = (function(){  //一個單例  return {
    creaet:function(mode){      var tmpMode;      switch(mode){        case 'mode1':          tmpMode = new mode1();          break;        case 'mode2':          tmpMode = new mode2();          break;        default:          tmpMode = new defamode();          break;      }      checkMode(mode,[xxx,xxx,xxx,xxx,xxx]);//checkMode的作用是檢查mode是否實現了後面的[xxx]方法,如果沒實現將拋出異常      return tpmMode;    }
  }})();function checkMode(obj,methods){  if(!(typeof obj == 'object')){    throw new Error("error");  }  for(var i=0,len=methods.length;i<len;i++){    var method = methods[i];    if(!obj[method] || typeof object[method] !== 'function'){      throw new Error('error');    }  }}

通過上面的代碼,便實現了簡單原廠模式。首先我們有一個myMode,他有一個create方法,這個方法將返回一個mode。

這個mode可以是任何對象。因為它是由一個外部單例所創造返回的mode。如果你想改變它,可以在外部單例裡加入更多的case。

只要它實現了規定的介面,那麼它就是符合的原廠模式的。是可以被myMode直接使用的。這一樣以來,就可以把所有的mode集中在一起管理。

想要添加或者更改mode也變得容易。好了,簡單原廠模式到此也就結束了。

下面是今天在某個群討論時,看到的一段對原廠模式的描述的比較好的話。便順手摘抄了下來

"後宮三千佳麗等待侍寢,大家都有名牌,一個太監把牌子拿上來,皇上翻,翻中一牌子給太監,太監去調這個女人(也許是男人),這個太監就相當於工廠,皇上給他參數,他根據參數去調用,但具體侍寢的事由後宮去實現,有的KJ,有的是XT,有的是TJ,有的是GJ,有的是XJ,各不相同"

不要問我那些字母代表什麼意思,我想大家都懂的~~~~

不好意思,剛剛建立單例那裡有點錯誤,已修正。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.