單例模式可以分為懶漢式和餓漢式:
懶漢式單例模式:在類載入時不初始化。
餓漢式單例模式:在類載入時就完成了初始化,所以類載入比較慢,但獲取物件的速度快。
第一種(懶漢,執行緒不安全):
public class single
public static single getinstance()
return single;
}}
這種寫法lazy loading很明顯,但是致命的是在多執行緒不能正常工作。
第二種(懶漢,執行緒安全):
public class single
public static synchronized single getinstance()
return single;
}}
這種寫法在getinstance()方法中加入了synchronized鎖。能夠在多執行緒中很好的工作,而且看起來它也具備很好的lazy loading,但是效率很低(因為鎖),並且大多數情況下不需要同步。
第三種(餓漢):
public class single
public static single getinstance()
}
這種方式基於classloder機制避免了多執行緒的同步問題,不過,instance在類裝載時就例項化,這時候初始化instance顯然沒有達到lazy loading的效果。
第四種(餓漢,變種):
public class singleton
public static singleton getinstance()
}
表面上看起來差別挺大,其實更第三種方式差不多,都是在類初始化即例項化instance
第五種(靜態內部類):
public class singletondemo5
private singletondemo5(){}
public static final singletondemo5 getinsatance()
}
第六種(列舉):
public enum singletondemo6
}
第七種(雙重校驗鎖):
public class singletondemo7
public static singletondemo7 getsingletondemo7()}}
return singletondemo7;
}}
java單例模式
第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...
Java 單例模式
單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...
Java單例模式
單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...