前言
單例模式是一種創(chuàng)建型設(shè)計模式,它可以保證一個類只有一個實例,并提供全局訪問點。單例模式在實際開發(fā)中經(jīng)常使用,可以避免多個實例引起的資源浪費和同步問題。常見的java實現(xiàn)方式有多種。
一、餓漢式單例模式
餓漢式單例模式是指在類加載時就創(chuàng)建了單例對象,因此在調(diào)用時不需要再創(chuàng)建對象,直接使用即可。這種實現(xiàn)方式比較簡單,但是在某些情況下可能會造成資源浪費。
二、懶漢式單例模式
懶漢式單例模式是指在調(diào)用時才創(chuàng)建單例對象,這種實現(xiàn)方式避免了資源浪費,但是需要注意線程安全問題。
三、雙重檢查鎖單例模式
雙重檢查鎖單例模式是指在懶漢式單例模式的基礎(chǔ)上加入了雙重檢查鎖機制,可以保證線程安全,同時也避免了資源浪費。
四、靜態(tài)內(nèi)部類單例模式
其中靜態(tài)內(nèi)部類單例模式最為常用,靜態(tài)內(nèi)部類單例模式利用了java語言中靜態(tài)內(nèi)部類的特性來實現(xiàn)單例模式。具體來說它將單例對象的創(chuàng)建延遲到靜態(tài)內(nèi)部類被加載時才執(zhí)行,從而避免了多線程環(huán)境下的同步問題。代碼示例如下:文章來源:http://www.zghlxwxcb.cn/news/detail-801940.html
public class SingletonDemo {
private static Map<String, String> idCodeMap=new ConcurrentHashMap<>();
private SingletonDemo(){
}
public static SingletonDemo getInstance(){
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder{
private static final SingletonDemo INSTANCE=new SingletonDemo();
}
}
總結(jié)
單例模式的實現(xiàn)方式雖然很多,但只要記住常用的一種即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-801940.html
到了這里,關(guān)于java設(shè)計模式-單例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!