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  可以看到全部內容
 可以看到全部內容