天天看點

Singleton模式(單例模式) 餓漢式和懶漢式

目的:整個應用中有且隻有一個執行個體,所有指向該類型執行個體的引用都指向這個執行個體。

好比一個國家就隻有一個皇帝(xxx),此時每個人叫的“皇帝”都是指叫的xxx本人;

常見單例模式類型:

餓漢式單例:直接将對象定義出來

懶漢式單例:隻給出變量,并不将其初始化;

我的總結:

餓漢式,static修飾,随着類的加載而加載,會損耗性能,但是方法相對簡單

懶漢式  第一次用的時候相對較慢,因為需要加載!線程,不安全!

package reviewdemo;

//單例模式

//餓漢式,直接把對象構造出來

class singledemo{

    private static singledemo s1 = new singledemo();

    private singledemo(){

        //提供私有化的構造方法,那麼外界就不能構造對象了!

    }

    public static singledemo gets1() {

        return s1;

}

//懶漢式,先定義,但是不建立對象

class singledemo2{

    private static singledemo2 s3 ;

    private singledemo2(){

    public static singledemo2 gets3() {//這是一個方法,傳回值為建立的對象!

        if(s3 == null){

            s3 = new singledemo2();

        }//和餓漢式的差別,此時才來建立對象!

        return s3;

public class demo14 {

    public static void main(string[] args) {

        singledemo s1 = singledemo.gets1();

        singledemo s2 = singledemo.gets1();

        singledemo2 s3 = singledemo2.gets3();

        singledemo2 s4 = singledemo2.gets3();

        system.out.println(s1 == s2);

        system.out.println(s3 == s4);

輸出:true true

備注:枚舉更加安全些

enum stu{

    jake;

    //将構造方法私有化起來,反射也不能建立對象,安全

    private stu(){

public class demo15 {

繼續閱讀