Allen學習筆記—java設計模式之單例模式
阿新 • • 發佈:2019-01-30
1.單例模式分類:
懶漢式單例、餓漢式單例、登記式單例(不常用)。
2.單例模式的特點:
單例類只能有一個例項;
單例類必須自己建立自己的唯一例項;單例類必須給所有其他物件提供這一例項;
3.單例模式示例程式碼:
餓漢式
//在類初始化時,已經自行例項化 public class Hungry { private Hungry() {} private static final Hungry hungry = new Hungry(); //靜態工廠方法 public static Hungry getInstance() { return hungry; } }
懶漢式
//第一次呼叫方法時,才例項化物件
public class Lazy {
private Lazy() {}
private static Lazy lazy=null;
//靜態工廠方法
public static Lazy getInstance(){
if (lazy == null) {
lazy = new Lazy();
}
return lazy;
}
}
3.執行緒安全性
餓漢式:在類建立的同時就已經例項化好了一個靜態的物件,所以是執行緒安全的。
懶漢式:建立物件過程中存在併發狀況,所以是執行緒不安全;
解決辦法:1.在方法上加同步(synchronized);
2.雙重檢查鎖定;
3.呼叫靜態內部類的方法