單例模式 Singleton

2022-04-29 13:48:08 字數 1435 閱讀 6074

對今天學習的singleton pattern簡單總結下:

定義:保證乙個類只有乙個例項,必須自己建立自己的例項,並提供乙個訪問它的全域性訪問點。

作用

適用場合

通常情況下,單例模式分為餓漢式和懶漢式,具體**參見下方

程序加鎖 (懶漢式 -> 餓漢式) –> 雙重鎖定(double-check locking) –> 靜態內部類 –> 列舉

懶漢式

public class singleton

public staticsynchronizedsingleton getinstace()

}

:同步方法解決多執行緒問題。僅第一次設定instance需要同步,之後每次呼叫此方法,同步都是累贅降低效能。

雙重鎖定 - 懶漢式改進版

public class singleton

public static singleton getinstace()

}return instance;

}}

:確保例項僅在未建立時加鎖,亦能保證多執行緒安全。

volatile:避免記憶體模型允許的』無序寫入』(某個執行緒可能會獲得乙個未完全初始化的例項[構造完整但是部分初始化])導致失敗。

餓漢式

public class singleton

public static singleton getinstace()

}

:使用靜態初始化(無需顯示編寫執行緒安全**),載入時即例項化,提前占用系統資源。

靜態內部類

public class singleton

private static class singletonhelper

public static singleton getinstace()

}

:載入時不會初始化靜態變數instance,達到延時載入。

static:成員變數只儲存乙份副本;

final:保證變數不可變。

列舉

public class singleton

}

:單元素的列舉型別是實現singleton的最佳方式。

Singleton 單例 模式

singleton 模式的宗旨在於確保某個類只有乙個例項,別且為之提供乙個全域性訪問點。為了防止其他工作人員例項化我們的類,可以為該類建立唯一乙個構造器,並將構造器的可見 設定為私有。值得注意的是,如果我們建立了其他的非私有的構造器,或者根本沒有為該類提 供構造器,那麼其他人員還是能例項化我們的類。...

Singleton 單例 模式

今天看了,單例模式。感覺他的本質就是,控制類例項的個數。特例就是,控制static變數的唯一性,保證各個程式共享著同一例項。乙個例子 package singleton description 這是乙個單例模式的使用demo author kyle goal 實現乙個類僅有乙個例項 singleto...

單例(Singleton)模式

單例模式的特點 singleton模式包含的角色只有乙個,那就是singleton。singleton擁有乙個私有建構函式,確保使用者無法通過new取得singleton的例項。除此之外,該模式中包含乙個靜態私有成員變數instance與靜態公有方法instance。instance方法負責檢驗並例...