關於java單例設計模式

關於java單例設計模式

什麼是單例設計模式,顧名思義:單例設計模式就是確保一個類裏只有一個實例的設計模式,這也是這個設計模式的優勢,這個類裏只會有一個實例。java

它的步驟:
1>咱們開發一個類,構造方法私有化,保證不能在程序中隨意new對象
2>在類裏定義一個靜態變量,實例化一個該類的實例(外界在調方法時,只能獲得一個實例,是一個單例的類)設計模式


兩種形式:安全

1.餓漢式單例類
  public class Cat{
    //static屬性保證了只持有一個Cat實例,每次調用靜態方法,都返回同一個Cat實例的引用
    private static Cat cat = new Cat();
    //私有化構造方法
    private Cat(){
    } //提供靜態的返回Cat實例的方法
    public static Cat getInstance(){
    return cat;
    }
  }多線程

2.懶漢式單例(何時調用靜態方法獲取實例,何時在建立對象)線程

  public class Cat{
    // static屬性:只存一份
    private static Cat cat;
    // 私有化構造方法
    private Cat() {
    }
    //提供靜態的返回Cat實例的方法
    public static Cat getInstance() {
      if (cat == null) {
      synchronized (Cat.class) {
      if (cat == null) {
      cat = new Cat();
      }
    }
    }
    return cat;
    }
  }設計

注:懶漢式單例在多線程環境下不安全,要加同步鎖synchronized,而後在同步代碼塊中加一層判斷,雙重斷定鎖j就能夠啦。對象

相關文章
相關標籤/搜索