設計模式學習 Singleton單態模式

2021-05-17 18:20:40 字數 812 閱讀 7700

單態定義:

singleton模式主要作用是保證在應用程式中,乙個類class只有乙個例項存在。

如何使用?

一般singleton模式通常有幾種形式:

第一種形式:

public class singleton

//在自己內部定義自己乙個例項,是不是很奇怪?

//注意這是private 只供內部呼叫

private static singleton instance = new singleton();

//這裡提供了乙個供外部訪問本class的靜態方法,可以直接訪問  

public static singleton getinstance()

} 第二種形式:

public class singleton

使用singleton.getinstance()可以訪問單態類。

上面第二中形式是lazy initialization,也就是說第一次呼叫時初始singleton,以後就不用再生成了。

注意到lazy initialization形式中的synchronized,這個synchronized很重要,如果沒有synchronized,

那麼使用getinstance()是有可能得到多個singleton例項。

一般認為第一種形式要更加安全些。

使用singleton注意事項:

有時在某些情況下,使用singleton並不能達到singleton的目的,如有多個singleton物件同時被不同的類

裝入器裝載;在ejb這樣的分布式系統中使用也要注意這種情況,因為ejb是跨伺服器,跨jvm的。

設計模式Singleton學習

確保乙個類只有乙個例項被建立,雖然看上去簡單,但是裡面卻有很多的陷阱。單例模式的類圖 經典的單例模式 這個也可以稱為 懶漢模式,只有在首次建立的時候,才去例項化。但是這種方式在多執行緒下是有問題的,第乙個執行緒執行到singleton new singleton 時,還沒有例項化,singleton...

設計模式Singleton學習

確保乙個類只有乙個例項被建立,雖然看上去簡單,但是裡面卻有很多的陷阱。單例模式的類圖 經典的單例模式 public class singleton private static singleton singleton null public static singleton getinstance ...

設計模式Singleton

設計模式singleton 引言 相信大多數拜讀過 gang of four erich gamma,richard helm,ralph johnson,john vlissides 的經典之作 design pattern 的同僚們,對這本書一定推崇有加。曾有人這麼宣告 只有在讀過 design...