摘要:單例模式說到單例設(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都是單線程的,所以并不像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)于循環(huán)和閉包當循環(huán)和閉包結(jié)合在一起時,經(jīng)常會產(chǎn)生讓初學者覺得匪夷所思的問題。閉包是一把雙刃劍是比較難以理解和掌握的部分,它十分強大,卻也有很大的缺陷,如何使用它完全取決于你自己。 在談閉包之前,我們首先要了解幾個概念: 什么是函數(shù)表達式? 與函數(shù)聲明有何不同? JavaScript查找標識符的機制 JavaScript的作用域是詞法作用域 JavaScript的垃圾回收機制 先來...
摘要:如何避免內(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ā)中不可缺少的...
摘要:如何避免內(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ā)中不可缺少的...
閱讀 823·2023-04-25 20:18
閱讀 2111·2021-11-22 13:54
閱讀 2551·2021-09-26 09:55
閱讀 3916·2021-09-22 15:28
閱讀 2990·2021-09-03 10:34
閱讀 1726·2021-07-28 00:15
閱讀 1651·2019-08-30 14:25
閱讀 1292·2019-08-29 17:16