よく知られているシングルトンデザインパターンの実装のニュアンスについてお話したいと思います。 はここにC++での2つの実装があります。シングルトンクラスの実装バージョン
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
私たちは、このバージョンを比較した場合、彼らが好まれているバージョン、最終的にどのような利点と欠点を持っているとん?
はい、パターンですが、使用する必要はありません。あなたは2つの悪のうち小さい方を選ぶでしょう。私はあなたが本当にそれが必要であるとは思わない。 –
@PeterWoodパターンではありません - アンチパターンです –
'__SINGLETON_HPP_'のような名前のインクルードガードを使用すると、実際には醜いことに加えて間違っています。 – 6502