對今天學習的singleton pattern簡單總結下:
定義:保證乙個類只有乙個例項,必須自己建立自己的例項,並提供乙個訪問它的全域性訪問點。
作用
適用場合
通常情況下,單例模式分為餓漢式和懶漢式,具體**參見下方
程序加鎖 (懶漢式 -> 餓漢式) –> 雙重鎖定(double-check locking) –> 靜態內部類 –> 列舉
懶漢式
public class singletonpublic staticsynchronizedsingleton getinstace()
}
注:同步方法解決多執行緒問題。僅第一次設定instance需要同步,之後每次呼叫此方法,同步都是累贅降低效能。
雙重鎖定 - 懶漢式改進版
public class singletonpublic static singleton getinstace()
}return instance;
}}
注:確保例項僅在未建立時加鎖,亦能保證多執行緒安全。
volatile:避免記憶體模型允許的』無序寫入』(某個執行緒可能會獲得乙個未完全初始化的例項[構造完整但是部分初始化])導致失敗。
餓漢式
public class singletonpublic static singleton getinstace()
}
注:使用靜態初始化(無需顯示編寫執行緒安全**),載入時即例項化,提前占用系統資源。
靜態內部類
public class singletonprivate 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方法負責檢驗並例...