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

  • 構(gòu)造函數(shù)模式
function Person(name,age){
  this.name = name
  this.age = age
}
Person.prototype.sayName = function(){
  return this.name
}

let student = new Person('tyy',25)
  • 工廠模式
function craetePerson(name){
  var person = {
    name: name,
    sayName: function(){
      console.log(this.name)
    }
  }
  return person
}
craetePerson('tyy')
  • 單例模式
var People = (function(){
  var instance
  function init(name){
    return {
      name: name
    }
  }
  return {
    craetePeople: function(name){
      if(!instance){
        instance = init(name)
      }
      return instance
    }
  }
}())
People.craetePeople('tyy') //{name: 'tyy'}
People.craetePeople('yyt') //{name: 'tyy'}
單例模式內(nèi)部有次判定,當(dāng)?shù)诙蝿?chuàng)建時(shí)不會(huì)建立新的引用
  • 模塊模式
var Person = (function(){
  var name = 'tyy'
  function sayName(){
    console.log(name)
  }
  return {
    name: name,
    sayName: sayName
  }
})()
  • 訂閱發(fā)布模式
var EventCenter = (function () {
  var events = {};
  //('hello',function(){})
  function on(evt, handler) {
    //判斷events里有沒(méi)有events['hello'],如果沒(méi)有events['hello']=[]
    events[evt] = events[evt] || [];
    // events['hello']=[{ handler: handler}]
    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);
      // 遍歷數(shù)組,執(zhí)行handler
    }
  }
  // 取消訂閱
  function off(evt){
     delete events[evt]
  }

  return {
    on: on,
    fire: fire,
    off: off   // 取消訂閱
  }
})();

EventCenter.on('hello', function () { console.log('hello') })

EventCenter.fire('hello')

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

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

  • 前言: 面向?qū)ο蟮恼Z(yǔ)言有一個(gè)標(biāo)志,那就是它們都有類(lèi)的概念,而通過(guò)類(lèi)可以創(chuàng)建任意多個(gè)具有相同屬性和方法的對(duì)象。ECM...
    徐國(guó)軍_plus閱讀 213評(píng)論 0 1
  • 接觸前端兩三個(gè)月的時(shí)候,那時(shí)候只是聽(tīng)說(shuō)設(shè)計(jì)模式很重要,然后我就去讀了一本設(shè)計(jì)模式的書(shū),讀了一部分,也不知道這些設(shè)計(jì)...
    艱苦奮斗的侯小憨閱讀 3,195評(píng)論 2 39
  • 工廠模式類(lèi)似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 8,131評(píng)論 2 17
  • 在夜深人靜時(shí),一人獨(dú)自醒來(lái),再想要入睡時(shí)總是會(huì)想到一些別人自殺的場(chǎng)景,這年頭自殺的人也越來(lái)越多,在現(xiàn)實(shí)生活中也常作...
    平仄人生閱讀 651評(píng)論 1 2
  • 20180203 星期六 睛天有太陽(yáng) 4-15度 效能 早睡早起23:20-6:40 學(xué)習(xí) 記英語(yǔ)單詞10-15個(gè)...
    雨晨_95a8閱讀 131評(píng)論 0 0

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