單例模式---懶漢模式與餓漢模式


單例模式:
1)一個類只能創建一個實例
2)構造函數和靜態變量(加載類時即初始化)需為private
3)get方法應該為public static,可供全局訪問



//
懶漢模式 public class lazySingleton { private static lazySingleton singleton=null; //懶,所以就不實例化了,加載類較快,但是第一次訪問類可能會有點慢 private lazySingleton(){ //nothing } public static lazySingleton getSingleton(){ if(singleton==null){ synchronized (this){ if(singleton==null) //這里的二次判斷很有必要啊,在多線程中同時到達第一個if的可能有多個,若此處沒有二次二次判斷,會導致new singleton()同步執行多次。 singleton=new lazySingleton(); } } return singleton; } }

 

//餓漢模式
public class hungrySingleton {
    private static final singleton=new hungerySingleton();//此處最好不要丟掉final

    private hungrySingleton(){
        //noting
    }
    public static hungrySingleton getSingleton(){
        return singleton();
    }
}

參考:Singleton單例模式(懶漢方式和餓漢方式)

          單例模式中的懶漢和餓漢模式的區別

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM