1. 程式人生 > >單例模式(java兩種方式實現)

單例模式(java兩種方式實現)

//測試類
public class SingletonTest1
{
    public static void main(String[] args)
    {
        //檢驗產生的例項是否是同一個例項
        Singleton  singleton1 = Singleton.getInstance();
        Singleton  singleton2 = Singleton.getInstance();
        System.out.println(singleton1==singleton2); //輸出true,說明產生的是同一個物件
    }

}


//------單例類---------------------
class Singleton { //在同一個類內部,可以通過訪問private,也就可以產生一個例項。(第三步) private static Singleton singleton = new Singleton(); //也必須是靜態的 //構造方法必須私有,不然就可以new出來很多物件(第一步) private Singleton() { } //構造方法私有帶來一個問題,就是不能產生例項了,所以通過寫一個方法返回一個例項(第二步) public static Singleton getInstance
() //必須為static 這樣在main中才能直接通過類名訪問(靜態的不能訪問非靜態的) { return singleton; //返回提前產生好的例項 } } ———————————————— //測試類 public class SingletonTest1 { public static void main(String[] args) { //檢驗產生的例項是否是同一個例項 Singleton singleton1 = Singleton.getInstance(); Singleton singleton2 = Singleton.getInstance(); System.out
.println(singleton1==singleton2); //輸出true,說明產生的是同一個物件 } } //------單例類--------------------- class Singleton { private static Singleton singleton; //先不產生例項 //構造方法必須私有,不然就可以new出來很多物件(第一步) private Singleton() { } //構造方法私有帶來一個問題,就是不能產生例項了,所以通過寫一個方法返回一個例項(第二步) public static Singleton getInstance() //必須為static 這樣在main中才能直接通過類名訪問(靜態的不能訪問非靜態的) { if(singleton == null) //判斷是否產生了例項,如果沒有產生 { singleton = new Singleton(); //則產生一個 } return singleton; } }