728x90
반응형
싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴이다. 싱글턴 패턴은 클래스에서 자신의 단 하나뿐인 인스턴스를 관리하도록 만들면 된다. 그리고 다른 어떤 클래스에서도 자신의 인스턴스를 추가로 만들지 못하도록 해야 한다. 인스턴스가 필요하면 반드시 클래스 자신을 거치하도록 해야 한다. 그리고 어디서든 그 인스턴스에 접근할 수 있도록 만들어야 한다. 다른 객체에서 이 인스턴스가 필요하면 언제든지 클래스한테 요청을 할 수 있게 만들고, 요청이 들어오면 그 하나뿐인 인스턴스를 건네주도록 만들어야 한다.
class Singleton
{
public:
Singleton() = default;
virtual ~Singleton() {}
static Singleton* getInstance()
{
if (uniqueInstance == nullptr)
uniqueInstance = new Singleton();
return uniqueInstance;
}
private:
static Singleton* uniqueInstance;
};
getInstance()의 속도가 문제가 되지 않는다면 그냥 사용하면 됩니다. 조금이라도 개선하고자 한다면 Singleton 클래스는 사용하려고 만들 것이 때문에 선언되면 바로 만들어버리는 것도 괜찮은 방법이다.
class Singleton
{
public:
Singleton()
{
uniqueInstance = new Singleton();
}
virtual ~Singleton() {}
static Singleton* getInstance()
{
return uniqueInstance;
}
private:
static Singleton* uniqueInstance;
};
thread-safe하게 mutex등을 넣어도 된다.
728x90
반응형
'소프트웨어 공부 > 디자인패턴' 카테고리의 다른 글
팩토리 패턴(Factory Pattern) (0) | 2022.04.07 |
---|---|
데코레이터 패턴(Decorator Pattern) (0) | 2022.04.06 |
옵저버 패턴(Observer Pattern) (0) | 2022.04.05 |
스트래티지 패턴(Strategy Pattern) (0) | 2022.04.04 |