當我們想在程式中表示某個東西只會存在乙個時,就會有「只能建立乙個例項」的需求。典型的例子有表示程式所執行的那台計算機的類,表示軟體系統相關設定的類,以及表示視窗(window system)的類。
singleton類只會生成乙個例項。singleton類定義了static欄位singleton,並將其初始化為singleton類的例項。初始化行為僅在該類被載入時進行一次。
singleton類的建構函式是private的,這是禁止從singleton類外部呼叫建構函式。
singleton類中還準備了getinstance()方法,以便於程式從singleton類外部獲取singleton類唯一的例項。
下面是一段singleton模式的示例程式。
名字說明
singleton
只存在乙個例項的類
main
測試程式行為的類
public class singleton
public static singleton getinstance()
}
示例輸出如下:public class main else
system.out.println("end.");
}}
##singleton模式中的角色start.
生成了乙個例項。
obj1與obj2是相同的例項。
end.
在singleton模式中,只有singleton這乙個角色。singleton角色中有乙個返回唯一例項的static方法。該方法總是會返回同乙個例項。
##singleton模式的思路
singleton模式對例項的數量設定了限制,確保了只有乙個例項。
程式執行後,在第一次呼叫getinstance()方法時,singleton類會被初始化。也就是在這個時候,static欄位singleton被初始化,生成了唯一的乙個例項。
設計模式總結
設計模式 singleton模式
使用單件模式的意圖是保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點。將單件定義為全域性或靜態物件,然後依賴於自動的初始化,並不能完全實現上述意圖。雖然可以提供全域性訪問點,但這是不夠的。原因如下 1 我們不能保證靜態物件只有乙個例項會被宣告。2 我們可能沒有足夠資訊在靜態初始化時例項化每個單...
設計模式Singleton
設計模式singleton 引言 相信大多數拜讀過 gang of four erich gamma,richard helm,ralph johnson,john vlissides 的經典之作 design pattern 的同僚們,對這本書一定推崇有加。曾有人這麼宣告 只有在讀過 design...
設計模式 Singleton
關於singleton模式的理解與思考 1 singleton模式最常用的解決方案是什麼?2 singleton如何保證執行緒安全性?3 singleton物件的析構如何完成?singleton模式用來保證乙個程序中只有乙個某型別的實體,也就是說程序中的多執行緒可能共享該實體。共享該實體是指共享該實...