1. 程式人生 > >Allen學習筆記—java設計模式之單例模式

Allen學習筆記—java設計模式之單例模式

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.呼叫靜態內部類的方法