我想討論着名的Singleton設計模式實現的細微差別。 在這裏有在C++兩種實現方式:Singleton類的實現版本
http://www.codeproject.com/Articles/1921/Singleton-Pattern-its-implementation-with-C
,另外一個是這樣的:
#ifndef __SINGLETON_HPP_
#define __SINGLETON_HPP_
template <class T>
class Singleton
{
public:
static T* Instance() {
if(!m_pInstance) m_pInstance = new T;
assert(m_pInstance !=NULL);
return m_pInstance;
}
protected:
Singleton();
~Singleton();
private:
Singleton(Singleton const&);
Singleton& operator=(Singleton const&);
static T* m_pInstance;
};
template <class T> T* Singleton<T>::m_pInstance=NULL;
#endif
如果我們比較這版本確實他們有什麼優勢和劣勢,最終,該版本是首選?
是的,這是一種模式,但並不意味着你應該使用它。你會選擇兩個邪惡中的較小者。我不認爲你真的需要它。 –
@PeterWood這不是一種模式 - 它是一種反模式 –
你知道使用名爲'__SINGLETON_HPP_'的包括守衛除了醜陋外其實是錯誤的嗎? – 6502