最簡單的單例模式

2022-02-18 22:49:15 字數 756 閱讀 3568

如果乙個類始終只能建立乙個例項,則這個類被稱為單例類。

在一些特殊的場景下,要求不允許自由建立該類的物件,而是只允許為該類建立乙個物件。為了避免其他類自由建立該類的例項,我們把該類的構造器使用private修飾,從而把該類的所有構造器隱藏起來。

根據良好封裝的原則:一單把該類的構造器隱藏起來,則需要提供乙個public方法作為該類的訪問點,用於建立該類的物件,且該方法必須使用static修飾(因為呼叫該方法之前還不存在物件,因此呼叫該方法的不可能是物件,只能是類)。

除此之外,該類還必須快取已經建立的物件,否則該類無法知道是否曾經建立過物件,也就無法保證只建立乙個物件。為此該類需要使用乙個屬性來儲存曾經建立的物件,因為該屬性需要被上面的靜態方法訪問,故該屬性必須使用static修飾。

基於上面的介紹,下面程式建立了乙個單例類。

程式如下:

1

class

singleton2;

7//提供乙個靜態方法,用於返回singleton例項8//

該方法可以加入自定義的控制,保證只產生乙個singleton物件

9public

static

singleton getintance()

1018

return

instance;

1920}21

22}2324

//測試**

25public

class

testsingleton

2635 }

最簡單的單例模式

1.啥是單例模式?答 單例模式就是乙個類只有乙個例項 2.為啥不用全域性變數來實現呢?答 因為單例模式既能有全域性變數的優點,可以全域性訪問,但是沒有全域性變數的缺點 3.啥缺點?答 如果我們要在乙個全域性指令碼中放乙個物件,那麼我們要在程式執行前就建立好,如果是開發遊戲,我們要在遊戲執行前建立好這...

單例模式最簡單可靠的寫法

單例模式大家都知道有兩種方式,一種是餓漢式,一種是懶漢式 餓漢式 一開始就初始化例項 public class singleton public static singleton getinstance 懶漢式,記住這種雙重檢查的方式,保證執行緒的安全 public class singleton ...

最普通的單例模式

最近閒來無事,回憶了最簡單的單例模式。經過了乙個小時的嘗試加修改,終於寫好了。下面分享一下我犯傻的地方 ps 這次的單例模式不涉及加鎖之類,只是最基本的單例模式 廢話不多說,先上 includeusing namespace std class singleton private singleton...