java兩種單例模式用法分析
本文實例講述了java兩種單例模式用法。分享給大家供大家參考,具體如下:
按照加載方式的不同,單例模式有兩種實現(xiàn):
private:只能在同一個類中使用
static:該類是類方法,不能調(diào)用實例方法。/類全局變量
final:方法或成員變量不能被修飾
1、餓漢式
public class EagerSigleton{
private static final EagerSigleton instance=new EagerSigleton();
private EagerSigleton(){}////私有構(gòu)造方法
public EagerSigleton getInstance(){//靜態(tài)工廠方法
return instance;
}
}
2、懶漢式
public class LazySigleton{
private static final LazySigleton instance=null;
private LazySigleton(){}//私有構(gòu)造函數(shù)
public synchronized LazySigleton getInstance(){//靜態(tài)工廠方法,注意這里的synchronized
if(instance==null){
instance=new LazySigleton();
}
return instance;
}
}
分析對比:
相同點:
單例模式屬于創(chuàng)建模式,保證在同一個jvm中僅僅存在該類的一個實例。在上面兩種的單例模式中,可以看出:
① 兩種方式的構(gòu)造函數(shù)都是私有的。
② 對外接口都是工廠方法。
不同點:
餓漢式是在類裝載時直接得到該類的實例,可以說式前期綁定的。而懶漢式在類加載時并沒有指向具體的某個對象。而是當(dāng)調(diào)用工廠方法后才被實例化。因此,前者速度快,后者速度慢。但后者可以加載其他的類,(也就是動態(tài)擴展)靈活性高。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
Java實現(xiàn)OJ多組測試數(shù)據(jù)的輸入方法
今天小編就為大家分享一篇Java實現(xiàn)OJ多組測試數(shù)據(jù)的輸入方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
使用mybatis進(jìn)行數(shù)據(jù)插入時返回自增id的方法及注意點
這篇文章主要給大家介紹了關(guān)于使用mybatis進(jìn)行數(shù)據(jù)插入時返回自增id的方法及注意點,在插入一條數(shù)據(jù)之后需要返回它的自增主鍵id,因為插入的實體類數(shù)據(jù)id為空,后面的邏輯還需要這個id,需要的朋友可以參考下2023-09-09
Mybatis-Plus雪花id的使用以及解析機器ID和數(shù)據(jù)標(biāo)識ID實現(xiàn)
這篇文章主要介紹了Mybatis-Plus雪花id的使用以及解析機器ID和數(shù)據(jù)標(biāo)識ID實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
基于swagger參數(shù)與實體中參數(shù)不一致的原因分析
這篇文章主要介紹了基于swagger參數(shù)與實體中參數(shù)不一致的原因分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
關(guān)于Spring3 + Mybatis3整合時多數(shù)據(jù)源動態(tài)切換的問題
這篇文章主要介紹了關(guān)于Spring3 + Mybatis3整合時多數(shù)據(jù)源動態(tài)切換的問題,需要的朋友可以參考下2017-04-04
IDEA提示內(nèi)存不足low memory的錯誤解決
運行項目變得很卡,這種情況比較能直觀感受出來,Idea內(nèi)存指示器,則需要設(shè)置才能看到,本文主要介紹了IDEA提示內(nèi)存不足low memory的錯誤解決,具有一定的參考價值,感興趣的可以了解一下2024-03-03

