設計模式 Singleton模式

2021-08-19 18:00:22 字數 1064 閱讀 3158

當我們想在程式中表示某個東西只會存在乙個時,就會有「只能建立乙個例項」的需求。典型的例子有表示程式所執行的那台計算機的類,表示軟體系統相關設定的類,以及表示視窗(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.");

}}

示例輸出如下:

start.

生成了乙個例項。

obj1與obj2是相同的例項。

end.

##singleton模式中的角色

在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模式用來保證乙個程序中只有乙個某型別的實體,也就是說程序中的多執行緒可能共享該實體。共享該實體是指共享該實...