Java中的單態模式的兩種實現方法

單態模式

  • 單例類只有一個實例,也就是一個類只能創建一個對象
  • 而且該對象只能由該類本身創建:所以類的構造方法必須是private
  • 單例類必須給其他對象提供這一個實例

方法1

錯誤版本


public class Singleton {

    private Singleton singleton = new Singleton();

    private Singleton(){

    }

    public Singleton getSingleton(){
        return singleton;
    }
    
}
  • 嘗試調用實例化這個類
    在這裏插入圖片描述
  • 因爲不可能由外部的類來實例化單例類,因爲單例類的構造方法都是私有的
  • 那如何解決?
  • 提供靜態方法就好!
  • 這樣就無需創建對象,就可以獲得由其內部產生的實例

正確版本

public class Singleton {

    private static Singleton singleton = new Singleton();

    private Singleton(){

    }

    public static Singleton getSingleton(){
        return singleton;
    }

}

方法2:和方法1無本質區別

public class Singleton {

    private static Singleton singleton;

    private Singleton(){

    }

    public static Singleton getSingleton(){
        if (singleton == null){
            singleton = new Singleton();
        }
        return singleton;
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章