편집 : 다른 질문에서 나는 싱글 톤에 대한 많은 질문 / 답변으로 연결되는 답변을 제공했습니다 : 싱글 톤에 대한 자세한 정보는 여기 :
그래서 Singletons 스레드를 읽었습니다 : 좋은 디자인 또는 목발?
그리고 논쟁은 여전히 분노합니다.
싱글 톤을 디자인 패턴으로보고 있습니다 (좋고 나쁨).
싱글 톤의 문제는 패턴이 아니라 사용자 (죄송합니다)입니다. 모두와 그들의 아버지는 그들이 정확하게 하나를 구현할 수 있다고 생각합니다. 또한 모두가 올바른 싱글 톤을 구현할 수 있다고 생각하기 때문에 패턴을 남용하여 적절하지 않은 상황에서 사용합니다 (글로벌 변수를 싱글 톤으로 대체!).
따라서 대답해야 할 주요 질문은 다음과 같습니다.
- 언제 싱글 톤을 사용해야합니까
- 싱글 톤을 올바르게 구현하는 방법
이 기사에 대한 희망은 싱글 톤을 올바르게 사용하는시기와 방법에 대한 권위있는 출처 (여러 사이트를 검색하고 검색하지 않고)를 한 곳에 모을 수 있기를 희망합니다. 또한 사용하지 않는 이유와 좋은 구현의 약점을 설명하는 안티 사용 및 일반적인 나쁜 구현 목록이 적합합니다.
공을 굴리십시오.
나는 손을 잡고 이것이 내가 사용하지만 문제가 있다고 말합니다.
나는 그의 책 "Effective C ++"에서 주제를 다루는 "Scott Myers"를 좋아한다
싱글 톤을 사용하는 좋은 상황 :
- 로깅 프레임 워크
- 스레드 재활용 풀
/*
* C++ Singleton
* Limitation: Single Threaded Design
* See: http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf
* For problems associated with locking in multi threaded applications
*
* Limitation:
* If you use this Singleton (A) within a destructor of another Singleton (B)
* This Singleton (A) must be fully constructed before the constructor of (B)
* is called.
*/
class MySingleton
{
private:
// Private Constructor
MySingleton();
// Stop the compiler generating methods of copy the object
MySingleton(MySingleton const& copy); // Not Implemented
MySingleton& operator=(MySingleton const& copy); // Not Implemented
public:
static MySingleton& getInstance()
{
// The only instance
// Guaranteed to be lazy initialized
// Guaranteed that it will be destroyed correctly
static MySingleton instance;
return instance;
}
};
확인. 비판과 다른 구현을 함께합시다.
:-)