單例模式可以說是最普為人知的一種設計模式了吧,但單例模式的細節又有多少人想清了呢?
單例模式的物件該如何釋放?何時釋放?如何優雅的釋放?
單例模式有哪幾種實現方式?
如果你瞬間就一大段**湧出腦海,我建議你別看這篇博文了,省得浪費你時間。
那下面就開始說正事吧
時間換取空間的實現方式,打死我也不建立物件。這種模式只有在第乙個物件例項化的時候才會建立物件,但實現起來稍微麻煩一些,要考慮到多執行緒的場景。
hungry_singleton_mode.h
#ifndef _singleton_
#define _singleton_
#include
"string"
#include
"iostream"
using
namespace std;
class
myself
//巢狀類實現自釋放單例物件
class
clean_up}}
;static clean_up m_clean;
public
:static myself*
get_instance
(string attr)
pthread_mutex_unlock
(&mutex);}
return m_me;
} string show_attr()
};#endif
hungry_singleton_mode.cpp
#include
"iostream"
#include
"pthread.h"
#include
"hungry_singleton_mode.h"
using
namespace std;
pthread_mutex_t myself::mutex = pthread_mutex_initializer;
myself* myself::m_me =
null
;//餓漢式
myself::clean_up myself::m_clean;
//初始化構造內部類物件
空間換時間的方法,一開始初始化的時候便建立物件,所以不用考慮多執行緒場景下執行緒同步的問題,故實現相對較簡單。
通過內部類的形式實現單例模式的物件自動釋放,具體**如上。但是切記內部類的物件開始需要初始化。
關於單例模式的心結
今天重構公司的 看到有乙個單例的物件,在整個系統中到處都存在呼叫它的身影,因為我們這個專案會在應用伺服器 server 第一次啟動的時候載入資料庫中的 表 為什麼要先載入,因為這個專案採用的是c s模式,利用remoting進行通訊,在客戶端啟動的時候會多次獲取 表中的不同資料。複製 1 publi...
關於單例模式的N種實現方式
在開發中經常用到單例模式,單例模式也算是設計模式中最容易理解,也是最容易手寫 的模式,所以也常作為面試題來考。所以想總結一下單例模式的理論知識,方便同學們面試使用。單例模式實現的方式只有兩種型別,一種是餓漢式 類載入時就初始化 一種是懶漢式 類載入時不初始化 餓漢式沒什麼可講究的因為它既簡單也執行緒...
關於單例設計模式的總結
1 什麼是單例設計模式 單例設計模式就是解決乙個類在記憶體中只有乙個物件。想要保證物件唯一 1 為了避免其他程式過多的建立該類物件,選控制其他程式建立該類物件 2 為了讓其他程式可以訪問到該類物件,只好在本類中自定義乙個物件 3 為了方便其他程式對自定義物件訪問,可以對外提供一些訪問方式 2 單例設...