單例模式

var singleton = (function() {
  let obj = null
  return function() {
    if (obj) {
      return obj
    }
    // TODO: init obj
    init();
  }
})()

主要應(yīng)用場(chǎng)景

  • 唯一性明確的場(chǎng)景(比如登錄框)

單例工廠

var singletonFactory = (function() {
  let cache = null
  return function(fn) {
    if (cache) {
      return cache
    }
    
    cache = new fn()
  }
})()

function LoginLayer() {
  var domObj = document.createElement('div')
  document.body.appendChild(domObj)
  domObj.style.display = 'none'
  return domObj
}

var getLoginLayerSingleton = singletonFactory(LoginLayer)

btn1.onclick = function() {
  // show
  var loginLayer = getLoginLayerSingleton()
  loginLayer.style.display = 'block'
}

btn1.onclick = function() {
  // hidden
  var loginLayer = getLoginLayerSingleton()
  loginLayer.style.display = 'none'
}
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡單、最易理解的設(shè)計(jì)模式,也因?yàn)樗暮啙嵰锥?,是?xiàng)目中最...
    成熱了閱讀 4,530評(píng)論 4 34
  • 01背景 以我們常用辦公軟件WPS為例,我們使用的時(shí)候期望點(diǎn)擊一次工具欄彈出一個(gè)對(duì)話框,再次點(diǎn)擊的時(shí)候仍然是當(dāng)前對(duì)...
    程序員姜戈閱讀 214評(píng)論 0 0
  • 1 單例模式的動(dòng)機(jī) 對(duì)于一個(gè)軟件系統(tǒng)的某些類而言,我們無須創(chuàng)建多個(gè)實(shí)例。舉個(gè)大家都熟知的例子——Windows任務(wù)...
    justCode_閱讀 1,549評(píng)論 2 9
  • 【學(xué)習(xí)難度:★☆☆☆☆,使用頻率:★★★★☆】直接出處:單例模式梳理和學(xué)習(xí):https://github.com/...
    BruceOuyang閱讀 736評(píng)論 1 2
  • 一、概念 1、單例模式的動(dòng)機(jī) ? 實(shí)際開發(fā)中,為了節(jié)約系統(tǒng)資源,并且共享一份數(shù)據(jù),有時(shí)需要確保系統(tǒng)中某個(gè)類只有唯...
    阿餅six閱讀 471評(píng)論 0 2

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