單例模式:
懶漢:執行緒不安全; 私有建構函式,單例物件,靜態工廠方法。
餓漢:執行緒安全; 類載入就建立,如果建立了不用就會造成資源的浪費。
懶漢:執行緒安全
1. 用synchronized修飾靜態工廠方法(同一時間上只允許乙個執行緒來訪問的方法,這會帶來效能上的開銷)。
2. 把synchronized用在方法實現上,判斷完後單杜鎖,叫雙重同步鎖單例模式,但這不是安全的,因為發生了指令重排。
3. 在2的基礎上,雙重檢測機制 + volatile, 禁止指令重排,這也是volatile的兩個常用功能之一。
餓漢模式:在類裝載時進行建立
public class singleton
// 單例物件
private static singleton instance = new singleton();
// 靜態的工廠方法
public static singleton getinstance()
}
懶漢模式:雙重同步鎖 + volatilepublic class singleton
// 單例物件 volatile + 雙重檢測機制 -> 禁止指令重排
private volatile static singleton instance = null;
// 靜態的工廠方法
public static singleton getinstance() }}
return instance;
}}
餓漢模式:在類載入時進行建立public class singleton
// 單例物件
private static singleton instance = null;
static
// 靜態的工廠方法
public static singleton getinstance()
public static void main(string args)
}
列舉方法:最安全public class singletonexample
public static singletonexample getinstance()
private enum singleton
public singletonexample getinstance()
}public static void main(string args)
}
設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...
設計模式之單例模式
package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...
設計模式之 單例模式
單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...