單件模式(單例模式)

2021-08-19 22:06:50 字數 1153 閱讀 6483

1 單件模式:確保乙個類只有乙個例項,並提供乙個全域性訪問點。

2 經典的單件模式實現

public

class singleton

public

static singleton getinstance()

return uniqueinstance;

}}

問題點:

public

static singleton getinstance()

return uniqueinstance;

}

當有兩個執行緒都要執行這段**時,就會出現意想不到的問題,這個問題暫叫問題1。

3 解決問題1

在多執行緒中,可以把getinstance()方法變成同步方法,如:

public

static

synchronized singleton getinstance()

return uniqueinstance;

}

又產生乙個問題,就是同步乙個方法可能會造成程式執行效率下降100倍,而且只有第一次執行此方法時,才真正需要同步,一旦uniqueinstance有值,就不再需要這個方法了。這個問題暫叫問題2.

4 解決問題2

方法1:可以使用「急切」建立例項,而不用延遲例項化做法

public

class singleton

public

static singleton getinstance()

}

但是假如這個單例物件一直沒用到過,而且該物件也一直比較占用空間,也不是很完美的解決方法。

5 終極解決方案

public

class singleton

public

static singleton getinstance()}}

return uniqueinstance;

}}

利用雙重檢查加鎖,首先檢查是否例項已經建立了,如果尚未「建立」,「才」進行同步。這樣一來,只有第一次會同步。這個做法可以大大減少getinstance()的時間耗費,但是這個有要求,jdk版本必須是1.5及以上版本。

單件模式(單例模式)

readme 0.1 本文部分描述 head first 設計模式 旨在學習 單件模式 單例模式 的相關知識 及其應用 單件模式 1.0 單件模式的應用背景 有一些物件其實我們只需要乙個,比方說 執行緒池,快取,對話方塊,登錄檔等的物件,這都可以通過單件模式來解決 1.1 定義 確保乙個類只有乙個例...

單例模式(單件模式)

color red size medium 單件模式,就是確保乙個類只有乙個例項,並提供乙個全域性訪問點。size color 單例的作用是獨一無二,比方說,如果有乙個登錄檔設定的物件,你不希望這樣的物件有多個拷貝吧,那會把設定搞得一團亂,利用像單例這樣的單件物件,可以確保程式中使用的全域性資源只有...

5 單件模式(單例模式)

head first design patterns master src headfirst designpatterns singleton 獨一無二的物件 整個程式中只允許有乙個物件 如資料庫連線或者執行緒池 否則 程式行為異常,資源使用過量,或者導致不一致的結果 構造器是私有的,通過呼叫靜態...