程式設計模式 一 單例模式

2021-10-10 03:05:46 字數 988 閱讀 6655

一、單例模式的定義和特點:

1.指乙個類只有乙個例項,且該類能自行建立例項的一種模式

2.特點:單例類只有乙個例項物件

3.該單例物件必須由單例類自行建立

4.單例類對外提供乙個訪問該單例的全域性訪問點

二、單例模式的優點和缺點:

優點:1.單例模式可以保證記憶體中只有乙個例項,減少了記憶體開銷

2.可以避免對資源的多重占用

3.單例模式設定全域性訪問點。可以優化和共享資源的訪問

缺點:1.單例模式一般沒有介面,擴充套件困難

2.在併發測試中,單例模式不利於**除錯

3.單例模式的功能**一般寫在乙個類中,如果設計不合理通常違背了 單一職責原則。

三、單例模式的應用場景

1.需要頻繁的建立一些類,使用單例可以降低系統的記憶體壓力 減少gc

2.某類 只要求 生成乙個物件的時候,如乙個班的班長,每個人的身份證號一樣

3.某些類建立例項 占用資源較多,或例項化耗時較長,且經常使用

4.當物件需要被共享的場合(上下文共享乙個例項),共享物件可以節省記憶體

四、單例模式的結構與實現:

1.先將單例類的建構函式設定成私有,外部無法直接通過建構函式建立例項

2.在類中定義乙個靜態的私有例項,並向外提供乙個靜態的公共的函式 用於建立或獲取該靜態私有例項(每次呼叫函式,判斷靜態私有例項變數是否為空或已建立賦值)

程式設計模式 單例模式

由於例項化是在初始化階段執行的,所以沒有執行緒安全的問題,但是潛在問題在於no local static物件 函式外的static物件 在不同編譯單元 可理解為cpp檔案和其包含的標頭檔案 中的初始化順序是未定義的。如果在初始化完成之前呼叫 instance 方法會返回乙個未定義的例項。例如有兩個單...

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...

一 單例模式

單例模式是最簡單的模式,只是在併發的時候單例模式的懶漢模式會有執行緒不安全的情況 單執行緒 單例模式 懶漢模式 執行緒不安全 package com.wb.single public class single public static single getinstance return singl...