單例設計模式多種實現方式

2021-07-27 16:53:15 字數 1253 閱讀 7488

public

class singleton //私有化建構函式,防止new物件

public

static singleton getinstance()

}

public

class singleton

public

static singleton getinstance()

return intance;

}}

這種模式為了執行緒安全需要雙重檢查,第二層檢查的目的是防止一種情況出現:假設有a執行緒進到同步**塊裡面,但還沒執行完intance = new singleton(); 此時intance為null,如果這時b執行緒獲取單例會走到synchronize這裡,因為同步的原因b執行緒會阻塞等待,當a執行緒執行完後intance已經指向乙個singleton物件了,這時b執行緒進入到同步**塊,如果不加第二個條件,b執行緒又會建立乙個新物件,這就不符合單例的原則了。

public

class singleton

public

static singleton getinstance() }}

return intance;

}}

推薦使用此方法實現單例。當第一次呼叫getinstance()方法時,虛擬化會載入singletonholder類,因為它是靜態內部類可以保證內部物件的唯一,並且執行緒安全

public

class singleton

public

static singleton getinstance()

private

static

class singletonholder

}

我們使用hashmap來儲存需要的單例型別,在程式開始呼叫registerservice來註冊各種單例型別,當我們需要單例物件時使用getintance()從hashmap中獲取單例型別

public

class singlemanager

public

static

void

registerservice(string key, object obj)

public

static

object

getintance(string key)

}

設計模式 單例模式的幾種實現方式

1.概述 單例模式 簡單的說就是可以確保只產生乙個類例項,讓多個使用者或者多個執行緒同時使用這乙個例項,而不需要每次使用都建立一次物件。2.優缺點和適用場景 3.幾種不同形式的單例模式 class singleclass public static singleclass getinstance 這...

設計模式 8種方式實現單例模式

1 餓漢式的兩種寫法 餓漢式的特點 在獲取單例物件之前物件就已經建立完成了。package com.juc程式設計.volatile0 public class singleeh public static singleeh getsingleeh 2.靜態 塊 private static fin...

單例模式的多種方式與選擇

當我們使用單例模式的時候,在實際需求場景中。單例模式可以給我們帶來更好的資源優化。但是同時,他也帶來了執行緒安全問題,下面使用了7中方式的單例模式,在實際場景中,我們往往不會簡簡單單的使用餓漢模式或者懶漢模式。public class test public static singleton get...