設計模式之"單列模式"

根據慕課網課程的理解
http://www.imooc.com/learn/112
單列模式 : 有且只有一個
    餓漢模式
安全

public class Singleton(){
    //1.將構造方法私有化,不容許外部直接建立對象
    private Singleton(){}
    //2.建立一個類的惟一實例,使用private static修飾
    private static Singleton instance=new Sngleton();
    //3.提供一個用戶獲取實例的方法,使用public static修飾
    public static Singleton getInstance(){
        return instance;
    }
}


餓漢模式當你加載的時候類自動幫你建立實例,就比如提早吃飯(餓)spa

解釋
1.將構造方法私有化,不容許外部直接建立對象
答:由於外部Singleton singleton=new Singleton();就等於建立了實例,多個實例就不是單列模式線程

2.建立一個類的惟一實例,使用private static修飾
答:使用static是由於直接使用類來訪問實例,Singleton singleton=Singleton.instance;
    使用private是爲了安全,封裝一下code

3.提供一個用戶獲取實例的方法,使用public static修飾
答:使用static是由於他屬於對象,加上static變成類全部對象


    懶漢模式get

public class Singleton(){
    //1.將構造方法私有化,不容許外部直接建立對象
    private Singleton(){}
    //2.申明類的惟一實例,使用private static修飾
    private static Singleton instance;
    //3.提供一個用戶獲取實例的方法,使用public static修飾
    public static Singleton getInstance(){
        if(instance=null){
            instance=new Sngleton();
        }
        return instance;
    }
}

懶漢模式當你調用getInstance()方法的時候纔會建立實例
當有第二我的來訪問的話就不會在建立實例
class

懶漢模式和餓漢模式的區別
餓漢式的特色:加載類時比較慢,可是運行時獲取對象的速度比較快,線程安全
懶漢式的特色:加載類時比較快,可是運行時獲取對象的速度比較慢,線程不安全方法

爲何呢???
餓韓式當你加載類的時候就會實例化,而懶漢式是你須要的時候纔會實例化。im

相關文章
相關標籤/搜索