設計模式之單例模式(及七種寫法)

2021-09-11 23:37:51 字數 1261 閱讀 2406

乙個類有且僅有乙個例項,並且自行例項化向整個系統提供

看看下面七種實現方式

public class singleton 

public static singleton getinstance()

}

public class singleton    

public static singleton getinstance()

return instance;

} }

public class singleton 

public static synchronized singleton getinstance()

return instance;

} }

public class singleton    

public static singleton getinstance()

} }

return singleton;

} }

public class singleton 

public static singleton getinstance()

private static class singletonholder

}

public enum singleton   

}

預設列舉例項的建立是執行緒安全的,並且在任何情況下都是單例,上述講的幾種單例模式實現中,有一種情況下他們會重新建立物件,那就是反序列化,將乙個單例例項物件寫到磁碟再讀回來,從而獲得了乙個例項。反序列化操作提供了readresolve方法,這個方法可以讓開發人員控制物件的反序列化。在上述的幾個方法示例中如果要杜絕單例物件被反序列化是重新生成物件,就必須加入如下方法 :

private object readresolve() throws objectstreamexception

public class singletonmanager 

public static void registerservice(string key, objectinstance)

}  public static objectgetservice(string key)

單例模式的七種寫法

第一種 懶漢,執行緒不安全 public class singleton public static singleton getinstance return instance 第二種 懶漢,執行緒安全 public class singleton public static synchronize...

七種單例模式的寫法

餓漢式 特點 在類載入時例項化,執行緒安全,如果沒有使用instance的話比較耗費資源 class singletondemo public static singletondemo getinstance 懶漢式 非執行緒安全 特點 使用時再例項化 class singletondemo pub...

JAVA設計模式 單例模式之七種常見寫法分析

簡介 單例模式是一種常見的設計模式,其定義是單例物件的類,在虛擬機器中只執行乙個例項存在。在多執行緒環境下,應該提供一定的機制,確保只會產生乙個例項 一 餓漢式 靜態變數 推薦 public class mysingleton1 private mysingleton1 此方法利用了jvm的類載入機...