我正在查看一个开源库VLMC并发现了这个单例的实现。它的完成方式是,为了创建单例类“Library”,Library继承自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
答案 0 :(得分:4)
如果你需要在某个全局的地方找到一个类的实例,那么每个人都可以看到它,然后创建一个实例并将它放在每个人都可以看到的地方。让类知道它将存在多少个实例并限制该类的基本用法是不好的设计。
我不止一次地看到,在项目开始时看起来像单身的一个类在项目结束时几乎没有实例。