廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4180 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
cxxlman
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][範例] 以函數指標完美建構 Singleton Pattern

GOF 著作中對 Singleton Pattern 的描述為:保證一個class只有一個實體(Instance),有人覺得 GOF 範例在判斷 Instance 是否
已建立降低了效率,有人就把他改為以下的方式來建立

Singleton *Singleton_create()
{
static Singleton m_Instatnce;

return &m_Instatnce;
}

但在多執行緒環境下有 memory leak 的疑慮,若還要加上一大堆執行緒的同步控制,則上面那個高效率的方法就不見了...:(
有兩個方法可以解決,一種另弄一個類別來幫忙,如以下的簡單示意:


class Singleton
{
static Singleton *_obj; // 存放建構出來的 Singleton 唯一的物件

public:

static Singleton *Create(void);
friend class Factory;
};


class SingletonHelp
{
public:
void SingletonHelp(Singleton **Obj)
{
/* 加一些同步控制....*/

*Obj = new Singleton();
}
};

Singleton::Create(void)
{
static SingletonHelp _Temp(&_obj);

return _obj;
}

但總覺得用了一些非正派的技巧,沒法確定是否能完全如己所願。

另一種則是以下的介紹的範例,藉由函數指標可替換的特性,完全符合 C++ 的規範內:


/*----------- ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被cxxlman在2008-04-10 17:24重新編輯 ]




獻花 x0 回到頂端 [樓 主] From:臺灣EDTNS-NET | Posted:2008-04-07 02:50 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.071695 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言