2011-10-20 14 views
2

私はopensourceライブラリVLMCを見て、このシングルトンの実装を見つけました。それが行われる方法は、シングルトンクラス 'ライブラリ'を作成するために、ライブラリはシングルトンから継承されました。このシングルトンテンプレートから継承する

// SINGLETON_HPP

template <typename T> 
class  Singleton 
{ 
    //regular singleton implementation 
    protected: 
     Singleton(){} 
     virtual ~Singleton(){} 
}; 

template <typename T> 
T* Singleton<T>::m_instance = NULL; 

// LIBRARY_H_

class Library : public Singleton<Library> 
{ 
    //some other stuff 
private: 
    Library(); 
    virtual ~Library(){} 

friend class Singleton<Library>; 
} 

と同じように、これは良いデザインますか?このデザインはどのようなメリットをもたらしますか? ありがとうございます。あなたは誰もがそれを見て、いくつかのグローバルな場所でのクラスの1つのインスタンスが必要な場合

CV

+0

SOのシングルトーンを検索すると、シングルトンを使用しない理由としない理由について、1トンの回答が得られるはずです。 – RedX

+0

ありがとうRedX、私はそれを検索します – blueskin

答えて

4

、その後、1つのインスタンスを作成し、誰もがそれを見ることができるどこかにそれを置きます。クラスのインスタンスがいくつあるのかを知り、クラスの基本的な使用を制限するのは悪い設計です。

私は、プロジェクトの最初にシングルトンのように見えるクラスは、プロジェクトの最後にほとんどインスタンスを持たないことが複数回見られました。