設計模式之單例項模式 Singleton

2022-07-29 14:21:24 字數 827 閱讀 6812

原理:將類的建構函式由pubic變為private或者protect,新增獲取物件的public 成員函式,返回指向物件的靜態指標。

首先來一段簡單的**實現

**一

class singleton

return pinstance;

}protected:

singleton()

private:

static singleton* pinstance;

};singleton* singleton::pinstance = null;

上述**存在記憶體洩露的問題,由於這個物件是由類本身自己構造的,依據c++物件釋放的原則,在**建立就在**釋放的原則,類本身自己需要釋放這個物件,如果交給了客戶去釋放則會造成野指標的情況,雖然智慧型指標解決了記憶體洩露的問題,但是沒有解決記憶體野指標的問題。如果在整個程式執行期間多個指標指向堆記憶體,就會造成野指標的現象,但是單例項模式採用的是靜態只能指標,即在整個程式執行完成之後才會釋放堆記憶體可以滿足要求,無需share_ptr。

**二

#include #include #include "iostream"

using namespace std;

class singleton

return ptrinstance.get();

}protected:

singleton()

private:

//static singleton* pinstance;

static auto_ptrptrinstance;

};auto_ptrsingleton::ptrinstance;

設計模式之單例項模式

例項,也就是物件,單例項,就是只能有乙個物件。那怎樣才能讓乙個類只能例項化乙個物件呢?很簡單,首先需要讓類的構造方法私有化,這樣外界就不能隨意的例項化物件了。接著,提供乙個公共的靜態的方法返回這個物件,讓外界得到這個類的物件。以乙個學生類為例 package com.techck.file auth...

php設計模式之單例模式例項分析

單例模式 職責模式 簡單的說,乙個物件 在學習設計模式之前,需要比較了程式設計客棧解物件導向思想 只負責乙個特定的任務 單例類 1 建構函式需要標記為private 訪問控制 防止外部 使用new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 ...

設計模式 單例模式 含例項

單例模式,非常常見的一種設計模式。需求 乙個類提供訪問該類物件的唯一方式,且全域性中有且僅有唯一乙個該類的例項。實現方式 1.建構函式private,類外不可建立類例項 2.提供訪問類例項的介面getinstance 3.建立static private的類物件 ifndef main h defi...