成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺談js單例模式

draveness / 987人閱讀

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

java單例模式

說到單例設(shè)計模式,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,簡單寫了下
1.私有化構(gòu)造函數(shù)
2.在public獲取實例的方法中返回實例化對象

(雖然很多大佬都寫過啦,但是小生為了加深記憶便再寫一遍)
雖然實現(xiàn)了單例模式,但是未考慮到線程安全,多個線程訪問能可能創(chuàng)建多個實例,也就是高并發(fā)時候單例模式會創(chuàng)建多個實例,那要如何解決此類問題呢?
這時候有兩種,一種是原來的懶漢模式借助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
    }
}

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

js單例模式

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

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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96118.html

相關(guān)文章

  • 淺談對JavaScript閉包的理解

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

    missonce 評論0 收藏0
  • 淺談前端中的錯誤處理

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

    ShowerSun 評論0 收藏0
  • 淺談前端中的錯誤處理

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

    BothEyes1993 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<