国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺談js單例模式

draveness / 976人閱讀

摘要:?jiǎn)卫J秸f(shuō)到單例設(shè)計(jì)模式,中經(jīng)常使用的單例模式通常分兩種,懶漢模式和餓漢模式懶漢模式簡(jiǎn)單寫了下私有化構(gòu)造函數(shù)在獲取實(shí)例的方法中返回實(shí)例化對(duì)象雖然很多大佬都寫過(guò)啦,但是小生為了加深記憶便再寫一遍雖然實(shí)現(xiàn)了單例模式,但是未考慮到線程安全,多個(gè)線

java單例模式

說(shuō)到單例設(shè)計(jì)模式,Java中經(jīng)常使用
java的單例模式通常分兩種,懶漢模式和餓漢模式

懶漢模式
class singleDemo {
    private static demoTarget;
    privete singleDemo () {};
    public static singleDemo getInstance (data) {
        if (demoTarget === null) {
           demoTarget = new singleDemo()
        }
        return demoTarget
    }
}

OK,簡(jiǎn)單寫了下
1.私有化構(gòu)造函數(shù)
2.在public獲取實(shí)例的方法中返回實(shí)例化對(duì)象

(雖然很多大佬都寫過(guò)啦,但是小生為了加深記憶便再寫一遍)
雖然實(shí)現(xiàn)了單例模式,但是未考慮到線程安全,多個(gè)線程訪問(wèn)能可能創(chuàng)建多個(gè)實(shí)例,也就是高并發(fā)時(shí)候單例模式會(huì)創(chuàng)建多個(gè)實(shí)例,那要如何解決此類問(wèn)題呢?
這時(shí)候有兩種,一種是原來(lái)的懶漢模式借助synchronized變身成為線程安全的懶漢模式,另一種則是餓漢模式

懶漢模式 (線程安全)
class singleDemo {
    private static demoTarget;
    privete singleDemo () {};
    public static synchronized singleDemo  getInstance (data) {
        if (demoTarget === null) {
            demoTarget= new singleDemo()
        }
        return demoTarget
    }
}
餓漢模式

什么是餓漢模式呢?就是在懶漢模式的基礎(chǔ)加一層鎖,能保證單例

class singleDemo {
    private static demoTarget = new singleDemo();
    private singleDemo () {};
    public static singleDemo getInstance (data) {
        return demoTarget
    }
}

好啦,簡(jiǎn)單的把java常用的兩種單例模式給寫了下,???標(biāo)題不是js的單例模式嘛?標(biāo)題寫錯(cuò)了?沒寫錯(cuò),小生只是回憶一下java的知識(shí),望各位大佬見諒
在js中如何實(shí)現(xiàn)單例呢?

js單例模式

由于js都是單線程的,所以并不像java那樣麻煩,并不需要考慮多線程情況,沒錯(cuò),只要能獲取單例就行,廢話不說(shuō),代碼先上

let Single = (function () {
        function constructor () {}
        var instance;
        function getInstance(){
            if (!instance) {
                instance = new constructor()
            }
            return instance
        }
        return {
            getInstance: getInstance
        }
    })()
    const demo1 = Single.getInstance()
    const demo2 = Single.getInstance()
    console.log(demo1 === demo2) // true

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/96118.html

相關(guān)文章

  • 淺談對(duì)JavaScript閉包的理解

    摘要:關(guān)于循環(huán)和閉包當(dāng)循環(huán)和閉包結(jié)合在一起時(shí),經(jīng)常會(huì)產(chǎn)生讓初學(xué)者覺得匪夷所思的問(wèn)題。閉包是一把雙刃劍是比較難以理解和掌握的部分,它十分強(qiáng)大,卻也有很大的缺陷,如何使用它完全取決于你自己。 在談閉包之前,我們首先要了解幾個(gè)概念: 什么是函數(shù)表達(dá)式? 與函數(shù)聲明有何不同? JavaScript查找標(biāo)識(shí)符的機(jī)制 JavaScript的作用域是詞法作用域 JavaScript的垃圾回收機(jī)制 先來(lái)...

    missonce 評(píng)論0 收藏0
  • 淺談前端中的錯(cuò)誤處理

    摘要:如何避免內(nèi)存泄露內(nèi)存泄漏很常見,特別是前端去寫后端程序,閉包運(yùn)用不當(dāng),循環(huán)引用等都會(huì)導(dǎo)致內(nèi)存泄漏。有的時(shí)候很難避免一些可能產(chǎn)生內(nèi)存泄漏的問(wèn)題,可以利用每次調(diào)用都在一個(gè)沙箱環(huán)境下調(diào)用,用完回收調(diào)。 某一天用戶反饋打開的頁(yè)面白屏幕,怎么定位到產(chǎn)生錯(cuò)誤的原因呢?日常某次發(fā)布怎么確定發(fā)布會(huì)沒有引入bug呢?此時(shí)捕獲到代碼運(yùn)行的bug并上報(bào)是多么的重要。 既然捕獲錯(cuò)誤并上報(bào)是日常開發(fā)中不可缺少的...

    ShowerSun 評(píng)論0 收藏0
  • 淺談前端中的錯(cuò)誤處理

    摘要:如何避免內(nèi)存泄露內(nèi)存泄漏很常見,特別是前端去寫后端程序,閉包運(yùn)用不當(dāng),循環(huán)引用等都會(huì)導(dǎo)致內(nèi)存泄漏。有的時(shí)候很難避免一些可能產(chǎn)生內(nèi)存泄漏的問(wèn)題,可以利用每次調(diào)用都在一個(gè)沙箱環(huán)境下調(diào)用,用完回收調(diào)。 某一天用戶反饋打開的頁(yè)面白屏幕,怎么定位到產(chǎn)生錯(cuò)誤的原因呢?日常某次發(fā)布怎么確定發(fā)布會(huì)沒有引入bug呢?此時(shí)捕獲到代碼運(yùn)行的bug并上報(bào)是多么的重要。 既然捕獲錯(cuò)誤并上報(bào)是日常開發(fā)中不可缺少的...

    BothEyes1993 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<