設(shè)計(jì)模式-單例模式

實(shí)現(xiàn)方式:

1. 餓漢模式

? 使用前創(chuàng)建一個(gè)單例,每次獲取同一個(gè)單例

? 通過static靜態(tài)代碼塊或靜態(tài)變量初始化

private static Instance instance=new Instance();
public static getInstance(){
? return instance;}

2. 懶漢模式

? 第一次使用時(shí)創(chuàng)建單例,后續(xù)使用獲取同一個(gè)單例

? ? 第一次創(chuàng)建時(shí)需要加同步鎖,避免多線程問題

? private static Instance instance=null;
public static getInstance(){
if(null==instance){
? ? synchronized(Object.class){
? ? ? ? ? instance=new Instance();
? ? }
? return instance;

3. 注冊(cè)模式

初始化時(shí)向map中注冊(cè)對(duì)象實(shí)例,在使用時(shí)從map中獲取

這種方式是Spring Ioc中獲取單例的方式。

4. 枚舉單例

枚舉中的對(duì)象都是單例的,常用于常量對(duì)象。


補(bǔ)充:序列化如何保證單例

在對(duì)象中增加public Object readResolve()方法,并返回單例。該方法由jvm調(diào)用,由該方法返回的對(duì)象替換在反序列化過程中創(chuàng)建的對(duì)象

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 單例模式 定義:確保一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。 使用場(chǎng)景:確保一個(gè)類有且只有一個(gè)...
    ping_平閱讀 225評(píng)論 0 0
  • 單例模式(Singleton Pattern)是眾多設(shè)計(jì)模式中較為簡(jiǎn)單的一個(gè),同時(shí)它也是面試時(shí)經(jīng)常被提及的問題,如...
    廖少少閱讀 651評(píng)論 0 1
  • 微信原文:設(shè)計(jì)模式 | 單例模式及典型應(yīng)用 單例是最常見的設(shè)計(jì)模式之一,實(shí)現(xiàn)的方式非常多,同時(shí)需要注意的問題也非常...
    小旋鋒的簡(jiǎn)書閱讀 1,859評(píng)論 2 5
  • 文章概要 1、什么是單例2、為什么需要單例3、單例的優(yōu)點(diǎn)和缺點(diǎn)4、單例的寫法和比較5、序列化破壞單例6、反射破壞單...
    張先森丶閱讀 577評(píng)論 0 1
  • 在Java設(shè)計(jì)模式中,單例模式相對(duì)來說算是比較簡(jiǎn)單的一種構(gòu)建模式。適用的場(chǎng)景在于:對(duì)于定義的一個(gè)類,在整個(gè)應(yīng)用程序...
    時(shí)待吾閱讀 282評(píng)論 0 0

友情鏈接更多精彩內(nèi)容