常見設(shè)計(jì)模式

1.寫出 構(gòu)造函數(shù)模式、混合模式诫隅、模塊模式、工廠模式帐偎、單例模式逐纬、發(fā)布訂閱模式的范例。

//1.構(gòu)造函數(shù)模式
//構(gòu)造函數(shù)模式就是使用this聲明變量削樊,然后使用new聲明新對(duì)象

function f1(name,age){
  this.age = age;
  this.name = name;
}
var p1 = new f1('envy',24);

//2.混合構(gòu)造函數(shù)和原型模式
//在構(gòu)造模式的基礎(chǔ)上添加了原型模式豁生,使用到原型的就是原型模式

function f2(name,age){
  this.name = name;
  this.age = age;
}
f2.prototype.sayName = function(){
  console.log(this.name);
}

var p2 = new f2("envy",23);

//3.模塊模式
//為對(duì)象添加私有變量和方法,并采用對(duì)象字面量的格式返回公有的方法或?qū)傩?/p>

var f3 = function(){
  var age = 10;
  function sayAge(){
    console.log(age);
  };
  return{
    sayAge: sayAge
  }
}()
f3.sayAge;

//4.工廠模式

function f4(name,age){
  var o = new Object();
  o.name = name;
  o.age = age;
  return o;
}
var p3 = f4('greed',25);

//5.單例模式

var house = function(){
  var instance;
  function house(){

  }
  house.prototype = {
    setPrice: function(price){
      this.price = price;
    },
    available: function(state){
      this.state = state;
    },
    announce: function(){
      console.log('price is: ' + this.price + ', available: ' + this.state);
    }
  };
  if (!instance) {
    instance = new house();
  }
  return instance;
}();
house.setPrice(200);
house.available('yes');
house.announce();

//6.發(fā)布訂閱模式

var EventManager = function(){
  var events = {};
  function on(evt,handler){
    events[evt] = events[evt] || [];
    events[evt].push({handler})
  }
  function fire(evt,args){
    if (!events[evt]) {
        return;
    }
    for (var i = 0; i < events[evt].length; i++) {
      events[evt][i].handler[args]
    }
  }
  return {
    on:on,
    fire:fire
  }
}();

2.使用發(fā)布訂閱模式寫一個(gè)事件管理器漫贞,可以實(shí)現(xiàn)如下方式調(diào)用甸箱。

Paste_Image.png
var EventManager = (function(){
  var events = {};
  function on(evt,handler){
    events[evt] = events[evt] || [];
    events[evt].push({handler:handler})
  }
  function fire(evt,args){
    if (!events[evt]) {
        return;
    }
    for (var i = 0; i < events[evt].length; i++) {
      events[evt][i].handler[args]
    }
  }
  function off(evt){
    if (!events[evt]) {
      return;
    }else{
      delete events[evt];
    }

  }
  return {
    on:on,
    fire:fire,
    off:off
  }
})();
EventManager.on('text:change',function(val){console.log('text:change... now val is' + val);});
EventManager.fire('text:change','饑人谷');
EventManager.off('text:change');

版權(quán)歸ENVY和饑人谷所有,轉(zhuǎn)載請(qǐng)注明出處迅脐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芍殖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谴蔑,更是在濱河造成了極大的恐慌豌骏,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隐锭,死亡現(xiàn)場離奇詭異窃躲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钦睡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門蒂窒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荞怒,你說我怎么就攤上這事刘绣。” “怎么了挣输?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵纬凤,是天一觀的道長。 經(jīng)常有香客問我撩嚼,道長停士,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任完丽,我火速辦了婚禮恋技,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逻族。我一直安慰自己蜻底,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布聘鳞。 她就那樣靜靜地躺著薄辅,像睡著了一般要拂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上站楚,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天脱惰,我揣著相機(jī)與錄音,去河邊找鬼窿春。 笑死拉一,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旧乞。 我是一名探鬼主播蔚润,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼尺栖!你這毒婦竟也來了嫡纠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤决瞳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后左权,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皮胡,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年赏迟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屡贺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锌杀,死狀恐怖甩栈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糕再,我是刑警寧澤量没,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站突想,受9級(jí)特大地震影響殴蹄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猾担,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一袭灯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绑嘹,春花似錦稽荧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畅卓。三九已至,卻和暖如春构挤,著一層夾襖步出監(jiān)牢的瞬間髓介,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工筋现, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唐础,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓矾飞,卻偏偏與公主長得像一膨,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洒沦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1.單例模式 定義: 單件模式確保一個(gè)類只有一個(gè)實(shí)例豹绪,并提供一個(gè)全局訪問點(diǎn). 使用場景: 用于創(chuàng)建獨(dú)一無二的,只能...
    好奇而已閱讀 465評(píng)論 0 0
  • 一申眼、設(shè)計(jì)模式的起源 最早提出“設(shè)計(jì)模式”概念的是建筑設(shè)計(jì)大師亞力山大Alexander瞒津。在1970年他的《建筑的永...
    冰凡513閱讀 340評(píng)論 0 0
  • 問答 1.寫出構(gòu)造函數(shù)模式、混合模式括尸、模塊模式巷蚪、工廠模式、單例模式濒翻、發(fā)布訂閱模式的范例屁柏。 工廠模式,想造什么造什么...
    GarenWang閱讀 366評(píng)論 0 0
  • 今天我們來總結(jié)下我們所學(xué)習(xí)的設(shè)計(jì)模式 面向?qū)ο蟮牧笤瓌t Android 設(shè)計(jì)模式之面向?qū)ο蟮牧笤瓌t 面向?qū)ο蟮?..
    AntDream閱讀 1,945評(píng)論 0 37
  • 迎來新的一年裸删,心中充滿了對(duì)未知生活的期待。坦白講阵赠,2014年過得并不順暢烁落,深陷泥沼,不能自拔豌注。幸好11月遇...
    好好生活的琳琳發(fā)閱讀 228評(píng)論 0 1