java 單例模式(懶漢式與餓漢式)
java 單例模式
單例模式是一種常用的軟件設(shè)計(jì)模式。在它的可信結(jié)構(gòu)中只包含一個(gè)被實(shí)例化單例的特殊類(lèi)。通過(guò)單例設(shè)計(jì)模式可以把整系統(tǒng)中的一個(gè)類(lèi)只有一個(gè)實(shí)例。
單例設(shè)計(jì)模式又分為兩種方式,懶漢式和餓漢式。
(1)懶漢式,就是只有當(dāng)調(diào)用getInstance的時(shí)候,才會(huì)初始化這個(gè)單例。
(2)餓漢式,就是一旦加載好類(lèi),就把單例初始化完成。即是調(diào)用getInstance的時(shí)候,單例是已經(jīng)存在了。
代碼如下:
懶漢式單例
/** * Description: * 一、設(shè)計(jì)了一個(gè)懶漢式單例 * * @author lee * */ public class SingleMode { public static SingleMode s = null; /** * Description: * 私有化構(gòu)造函數(shù) * * */ private SingleMode(){} /** * Description: * 提供一個(gè)方法來(lái)獲取該單例 * * @return s 返回一個(gè)單例 * */ public static SingleMode getInstance(){ //保證了線(xiàn)程安全,又減輕了資源加載和性能上的負(fù)擔(dān) //即是在創(chuàng)建一次對(duì)象后,不再需要線(xiàn)程鎖了。 if(s==null){ synchronized(""){ if(s==null){ s = new SingleMode(); } } } return s; } }
餓漢式單例
/** * Description: * 二、設(shè)計(jì)了一個(gè)餓漢式單例 * * @author lee * */ class SingleMode1{ public static final SingleMode1 s = new SingleMode1(); /** * Description: * 私有化構(gòu)造函數(shù) * * */ private SingleMode1(){} /** * Description: * 提供一個(gè)方法來(lái)獲取該單例 * * @return s 返回一個(gè)單例 * */ public static SingleMode1 getInstance(){ return s; } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Spring?Cloud實(shí)現(xiàn)灰度發(fā)布的示例代碼
這篇文章主要為大家詳細(xì)介紹了Spring?Cloud實(shí)現(xiàn)灰度發(fā)布的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-09-09Spring Boot + Mybatis 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源案例分析
這篇文章主要介紹了Spring Boot + Mybatis 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源,需要的朋友可以參考下2018-11-11Java中的SynchronousQueue隊(duì)列詳解
這篇文章主要介紹了Java中的SynchronousQueue隊(duì)列詳解,SynchronousQueue是BlockingQueue的一種,所以SynchronousQueue是線(xiàn)程安全的,SynchronousQueue和其他的BlockingQueue不同的是SynchronousQueue的capacity是0,需要的朋友可以參考下2023-12-12SpringBoot項(xiàng)目導(dǎo)出jar包及瘦身部署方式
今天項(xiàng)目要求Nginx+jar包運(yùn)行多個(gè)項(xiàng)目,在此記錄一下部署的過(guò)程,其中借鑒了好多網(wǎng)上前輩的經(jīng)驗(yàn),感謝各位的無(wú)私分享2024-07-07spring用戶(hù)通過(guò)交互界面登錄成功的實(shí)現(xiàn)
本文主要介紹了spring用戶(hù)通過(guò)交互界面登錄成功的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07List、Map、Set接口在Java中的存取元素特點(diǎn)詳細(xì)探討
在Java編程語(yǔ)言中集合框架是處理對(duì)象組的重要工具,主要包括List、Set和Map接口,這些接口及其實(shí)現(xiàn)類(lèi)提供了豐富的功能,這篇文章主要給大家介紹了關(guān)于List、Map、Set接口在Java中的存取元素特點(diǎn),需要的朋友可以參考下2024-08-08