Singleton單例模式

2021-06-22 13:40:46 字數 1207 閱讀 7348

本文在戒色文中做了部分修改,這是考慮最簡單的singleton,暫未考慮多執行緒的情況,多執行緒的singleton之後會給出說明。

singleton 是對全域性變數的取代策略

作用:保證乙個類只能有乙個例項,並提供乙個全域性唯一的訪問點。

僅有乙個例項:通過類的靜態成員變數來體現。

提供訪問它的全域性訪問點:訪問靜態成員變數的靜態成員函式來體現。

《設計模式》一書中給出了一種很不錯的實現,定義乙個單例類,使用類的私有靜態指標變數指向類的唯一例項,並用乙個公有的靜態方法獲取該例項。

單例模式通過類本身來管理其唯一例項,這種特性提供了解決問題的方法。唯一的例項是類的乙個普通物件,但設計這個類時,讓它只能建立乙個例項並提供對此例項的全域性訪問。唯一例項類singleton在靜態成員函式中隱藏建立例項的操作。習慣上把這個成員函式叫做instance(),它的返回值是唯一例項的指標。

單例類singleton有以下特徵:

它有乙個指向唯一例項的靜態指標,並且是私有的;

它有乙個公有的函式,可以獲取這個唯一的例項,並且在需要的時候建立該例項;

它的建構函式是私有的,這樣就不能從別處建立該類的例項。

在singleton模式的結構圖中可以看到,我們通過維護乙個static的成員變數_instance來記錄這個唯一的物件例項。通過提供乙個staitc的介面instance來獲得這個唯一的例項。

**如下:

singleton.h 

#ifndef _singleton_h_

#define _singleton_h_

class singleton

;#endif

singleton.cpp

#include "singleton.h"

#include using namespace std;

singleton* singleton::pinstance = null;

singleton::singleton()

singleton* singleton::instance()

return pinstance;

}singleton::~singleton()

}

singleton不可以在外部例項化,因此我們將其建構函式宣告為protected或者直接宣告為private。

Singleton 單例 模式

singleton 模式的宗旨在於確保某個類只有乙個例項,別且為之提供乙個全域性訪問點。為了防止其他工作人員例項化我們的類,可以為該類建立唯一乙個構造器,並將構造器的可見 設定為私有。值得注意的是,如果我們建立了其他的非私有的構造器,或者根本沒有為該類提 供構造器,那麼其他人員還是能例項化我們的類。...

Singleton 單例 模式

今天看了,單例模式。感覺他的本質就是,控制類例項的個數。特例就是,控制static變數的唯一性,保證各個程式共享著同一例項。乙個例子 package singleton description 這是乙個單例模式的使用demo author kyle goal 實現乙個類僅有乙個例項 singleto...

單例(Singleton)模式

單例模式的特點 singleton模式包含的角色只有乙個,那就是singleton。singleton擁有乙個私有建構函式,確保使用者無法通過new取得singleton的例項。除此之外,該模式中包含乙個靜態私有成員變數instance與靜態公有方法instance。instance方法負責檢驗並例...