2011-10-20 5 views
2

오픈 소스 라이브러리 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>; 
} 

처럼이 좋은 디자인인가? 그리고이 디자인이 제공하는 이점은 무엇입니까? 감사합니다. 당신은 모든 사람들이 그것을보고 일부 글로벌 곳의 클래스의 인스턴스가 필요한 경우

CV

+0

싱글 톤을 검색하면 싱글 톤을 사용하지 않는 이유와 사용시기에 대한 답변을 얻을 수 있습니다. – RedX

+0

RedX에게 감사드립니다. 검색하겠습니다. – blueskin

답변

4

, 다음 하나 개의 인스턴스를 생성하고 모든 사람들이 볼 수있는 곳에 넣어. 클래스가 얼마나 많은 인스턴스가 존재하는지 알게하고 클래스의 기본 사용을 제한하는 것은 좋지 않은 디자인입니다.

필자는 프로젝트가 시작될 때 싱글 톤처럼 보인 클래스는 프로젝트가 끝날 때 인스턴스가 거의 없다는 것을 두 번 이상 보았습니다.