Java之單例設(shè)計(jì)模式示例詳解
單例設(shè)計(jì)模式
保證一個(gè)類在內(nèi)存中只能有一個(gè)對(duì)象。
思路:
1)如果其他程序能夠隨意用 new 創(chuàng)建該類對(duì)象,那么就無法控制個(gè)數(shù)。因此,不讓其他程序用 new 創(chuàng)建該類的對(duì)象。
2)既然不讓其他程序 new 該類對(duì)象,那么該類在自己內(nèi)部就要?jiǎng)?chuàng)建一個(gè)對(duì)象,否則該類就永遠(yuǎn)無法創(chuàng)建對(duì)象了。
3)該類將創(chuàng)建的對(duì)象對(duì)外(整個(gè)系統(tǒng))提供,讓其他程序獲取并使用。
餓漢式:
一上來我就把對(duì)象給你 new 好了,你來了直接就可以拿去“吃”了
懶漢式
(要是有人問單例的延遲加載方式指的就是這種方式)
一開始我就不給你 new 對(duì)象,你來找我,我在給你創(chuàng)建一個(gè)對(duì)象
懶漢式有一個(gè)缺點(diǎn),就是在多線程中使用的時(shí)候,可能會(huì)創(chuàng)建多個(gè)實(shí)例對(duì)象,比如,線程1來調(diào)用 getInstance() 方法,判斷了 s==null,然后線程1由于未知的原因阻塞了,線程2再來調(diào)用getInstance() 方法,判斷 s==null ,線程2就創(chuàng)建了一個(gè)對(duì)象,這時(shí)候線程1又運(yùn)行了,那么線程1就會(huì)創(chuàng)建一個(gè)對(duì)象~這樣就會(huì)造成多個(gè)對(duì)象~
懶漢式的線程優(yōu)化——加一個(gè)鎖
餓漢式和懶漢式的區(qū)別:
1)餓漢式是空間換時(shí)間,懶漢式是空間換時(shí)間。
2)在多線程訪問的時(shí)候,懶漢式可能會(huì)創(chuàng)建多個(gè)對(duì)象,而餓漢式不會(huì)。
到此這篇關(guān)于Java之單例設(shè)計(jì)模式示例詳解的文章就介紹到這了,更多相關(guān)Java 單例設(shè)計(jì)模式 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java設(shè)計(jì)模式之觀察者模式(Observer Pattern)詳解
觀察者模式(Observer Pattern)是一種行為型設(shè)計(jì)模式,它定義了一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都能夠自動(dòng)地得到通知并進(jìn)行更新,本文將詳細(xì)的給大家介紹一下Java觀察者模式,需要的朋友可以參考下2023-07-07SpringBoot報(bào)錯(cuò)Invalid?bound?statement?(not?found)問題排查和解決方案
這篇文章主要介紹了SpringBoot報(bào)錯(cuò)Invalid?bound?statement?(not?found)問題排查和解決方案,文中通過圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03Druid簡單實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查方式
這篇文章主要介紹了Druid簡單實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07MyBatisPlus中@TableField注解的基本使用
這篇文章主要介紹了MyBatisPlus中@TableField注解的基本使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java 其中翻轉(zhuǎn)字符串的實(shí)現(xiàn)方法
這篇文章主要介紹了Java 其中翻轉(zhuǎn)字符串的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-02-02Spring boot集成swagger2生成接口文檔的全過程
這篇文章主要給大家介紹了關(guān)于Spring boot集成swagger2生成接口文檔的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09