單例模式【Singleton Pattern】


/**

 * 餓漢模式(線程安全)
 */

public class Singleton1 {

    private Singleton1(){


    }

    private static Singleton1 instance = new Singleton1();

    public static Singleton1 getInstance(){

        return instance;

    }

}





/**

 * 懶漢模式(線程不安全)

 */

public class Singleton2 {

    private Singleton2(){

        
    }

    private static Singleton2 instance;

    public static Singleton2 getInstance(){

        if(instance==null){

            instance = new Singleton2();

        }

        return instance;

    }

}





/**

 * 通用單例模式

 */

public class Singleton3 {

    
    private static final Singleton3 singleton = new Singleton3();

    private Singleton3(){

        
    }

    private synchronized static Singleton3 getInstance(){

        return singleton;

    }

}





/**

 * 雙檢查的加鎖的單例模式

 */

public class Singleton4 {

    
    private static volatile Singleton4 singleton;

    private Singleton4(){    

    }

    private static Singleton4 getInstance(){

        if(null == singleton){

            synchronized(Singleton4.class){

                if(null == singleton){

                    singleton = new Singleton4();

                }

            }

        }

        return singleton;

    }

}

 

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