Java實現單例設計模式方法解析
更新時間:2020年04月03日 14:22:29 作者:dirsoen
這篇文章主要介紹了Java實現單例設計模式方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
單例模式的幾種實現方式:
一:餓漢式單例
方式一:枚舉方式獲得單例對象
方式二:靜態(tài)屬性獲得單例對象
方式三:靜態(tài)方法獲得單例對象
二:懶漢式單例
方式一:靜態(tài)方法獲得單例對象(線程安全)
方式二:內部類方式去獲取單例對象
示例:
惡漢式:方式一
enum Singleton{
INSTANCE;//單例
}
惡漢式:方式二
class Singleton{
public static final Singleton INSTANCE = new Singleton();//單例
private Singleton(){}
}
惡漢式:方式三
class Singleton{
private static final Singleton INSTANCE = new Singleton();//單例
private Singleton(){}
public static Singleton getInstance(){
return INSTANCE;
}
}
懶漢式:方式一
class Singleton{
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
//存在線程安全問題(多線程的時候,不一定是單例)
/*if(null == instance){
instance = new Singleton();
}
return instance;*/
if(null == instance){
//提升代碼效率,避免每一次都去走同步代碼塊
synchronized(Singleton.class){
if(null == instance){
instance = new Singleton();
}
return instance;
}
}
return instance;
}
}
}
懶漢式:方式二
class Singleton{
private Singleton(){}
private static class Inner{
public static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance(){
return Inner.INSTANCE;
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot中@ComponentScan注解過濾排除不加載某個類的3種方法
這篇文章主要給大家介紹了關于SpringBoot中@ComponentScan注解過濾排除不加載某個類的3種方法,文中通過實例代碼介紹的非常詳細,對大家學習或者使用SpringBoot具有一定的參考學習價值,需要的朋友可以參考下2023-07-07
SpringBoot集成easy-rules規(guī)則引擎流程詳解
這篇文章主要介紹了SpringBoot集成easy-rules規(guī)則引擎流程,合理的使用規(guī)則引擎可以極大的減少代碼復雜度,提升代碼可維護性。業(yè)界知名的開源規(guī)則引擎有Drools,功能豐富,但也比較龐大2023-03-03

