設計模式 建立型 單例模式

2021-10-20 18:49:16 字數 1156 閱讀 6624

英文singleton,又稱單件模式。

描述

確保類只有乙個例項,並且提供了乙個全域性訪問點。

在應用的某些場景,我們只需要類的乙個例項就夠了,並且我們需要在應用的多個地方(客戶**)方便的獲取該例項物件。

比如應用中的乙個浮動工具欄,或者是乙個資訊收集器(專門收集應用中的操作資訊)等等。

優點

方便的控制僅唯一例項,並且入口只有instance。

建立放在類內部管理,也避免了客戶端去維護建立和生命期。

類圖

實現**

這樣子,我們可以方便的通過getinstance靜態成員函式獲取同乙個唯一例項,然後,通過非靜態方法addinfo將操作放入到操作集合中m_vecoperinfo。

infocollector::getinstance().addinfo("hello");

infocollector::getinstance().addinfo("hi");

infocollector::getinstance().addinfo("buy");

infocollector::getinstance().printinfo();

#pragma once

#include #include #include using namespace std;

// 資訊收集助手,用於記錄使用者操作

class infocollector

; infocollector(infocollector& info){}

private:

vectorm_vecoperinfo;

public:

// 必須返回引用,內部用靜態變數,避免多執行緒加鎖問題。也不必判斷指標

static infocollector& getinstance()

void addinfo(string stroper)

void printinfo() }

};

設計模式 建立型 單例模式

單例模式在整個軟體開發中還是比較常用的,頻繁使用且過程穩定的方法 全域性變數都可以使用該模式,也可以叫做公共類。單例模式需要遵循要麼出現一次,要麼不出現的規則。單例模式不提供外部例項化功能,在內部自已例項化以保證其唯一例項。具體如下 class common public static common...

設計模式 建立型 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式劃分 class singleton 獲取本類例項的唯一全域性訪問點 public static singleton getinstance return instance 物件屬於引用資料型別,和基本資料...

設計模式 單例模式(建立型)

類的物件只能存在乙個。使用類的靜態物件成員儲存唯一的單例物件,然後將建構函式設為private。通過乙個靜態函式返回儲存的單例物件。依據靜態資料成員建立的時機分為 程式載入時建立 直接new 首次需要的時候建立 get中先判斷是否為null 在多執行緒中,延時建立會導致爭用,因此採用兩段判斷的形式。...