單例設計模式

2021-07-15 13:59:32 字數 1379 閱讀 4086

單例模式( singleton pattern) 是乙個比較簡單的模式, 其定義如下:

ensure a class has only one instance, and provide a global point of access to it.
( 確保某乙個類只有乙個例項, 而且自行例項化並向整個系統提供這個例項。 )

singleton類稱為單例類, 通過使用private的建構函式確保了在乙個應用中只產生乙個實

例, 並且是自行例項化的( 在singleton中自己使用new singleton()) 。

/**

餓漢式單例

*/public class singleton

//通過該方法獲得例項物件

public static singleton getsingleton()

//類中其他方法, 盡量是static

public static void dosomething()

}

在乙個系統中, 要求乙個類有且僅有乙個物件, 如果出現多個物件就會出現「不良反

應」, 可以採用單例模式, 具體的場景如下:

如果乙個類可以產生多個物件, 物件的數量不受限制, 則是非常容易實現的, 直接使用

new關鍵字就可以了, 如果只需要乙個物件, 使用單例模式就可以了, 但是如果要求乙個類

只能產生兩三個物件呢? 該怎麼實現? 我們還以皇帝為例來說明。

在emperor中使用了兩個arraylist分別儲存例項和例項變數。 當然, 如果考慮到執行緒安

全問題可以使用vector來代替。 臣子參拜皇帝的過程如**清單7-6所示。

**清單7-6 臣子參拜皇帝的過程

public class minister {

public static void main(string args) {

//定義5個大臣

int ministernum =5;

for(int i=0;i看, 果然每個大臣參拜的皇帝都可能不一樣, 大臣們就開始糊塗了, a大臣給皇1帝匯

報了一件事情, 皇2帝不知道, 然後就開始懷疑大臣a是皇1帝的親信, 然後就想辦法開始

整……單例模式是23個模式中比較簡單的模式, 應用也非常廣泛, 如在spring中, 每個bean默

認就是單例的, 這樣做的優點是spring容器可以管理這些bean的生命期, 決定什麼時候建立

出來, 什麼時候銷毀, 銷毀的時候要如何處理, 等等。 如果採用非單例模式( prototype類

型) , 則bean初始化後的管理交由j2ee容器, spring容器不再跟蹤管理bean的生命週期。

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...

設計模式 單例設計模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...