Наследование от шаблона-одиночки - PullRequest
2 голосов
/ 20 октября 2011

Я искал библиотеку VLMC с открытым исходным кодом и нашел эту реализацию синглтона.Для создания одноэлементного класса «Библиотека» библиотека была унаследована от 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>;
}

Это хороший дизайн?И какие преимущества дает этот дизайн?Спасибо.

CV

1 Ответ

4 голосов
/ 20 октября 2011

Если вам нужен один экземпляр класса в каком-то глобальном месте, где все его видят, то создайте один экземпляр и поместите его туда, где его смогут увидеть все. Это плохой дизайн, чтобы заставить класс знать, сколько его экземпляров будет существовать, и ограничить базовое использование класса.

Я не раз видел, чтобы у класса, который в начале проекта казался одноэлементным, было несколько экземпляров в конце проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...