2011-10-20 6 views
2

Je regardais une bibliothèque opensource VLMC et j'ai trouvé cette implémentation d'un singleton. La façon dont cela est fait est, pour créer une bibliothèque de classes singleton, la bibliothèque a été héritée d'un singleton. Comme cetteHéritage d'un modèle singleton

// 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>; 
} 

Est-ce une bonne conception? Et quels avantages cette conception fournit-elle? Merci.

CV

+0

Recherchez singleton sur SO et vous devriez obtenir une tonne de réponses sur pourquoi et quand ne pas utiliser singletons. – RedX

+0

merci RedX, je vais le rechercher – blueskin

Répondre

4

Si vous avez besoin d'une instance d'une classe dans un lieu où tout le monde global voir, puis créer une instance et le mettre quelque part tout le monde peut le voir. C'est une mauvaise conception de faire savoir à la classe combien d'instances existeront et limiteront l'utilisation de base de la classe.

J'ai vu plus d'une fois qu'une classe qui semblait être un singleton au début du projet avait peu d'instances à la fin du projet.