728x90
객체 지향 프로그래밍에서 중요한 디자인 패턴으로,
특정 클래스가 단 하나의 인스턴스만 가지도록 보장하고, 그 인스턴스에 대한 전역적인 접근점을 제공한다.
즉, 전역변수로 선언한것과 같은 역할을 한다고 이해하면 된다.
특징
- 인스턴스 제한.
- 싱글톤 패턴은 인스턴스가 한개만 존재하도록 제한한다.
- 전역적인 접근점 제공
- 어디서든 해당 인스턴스에 접근할 수 있는 접근점을 제공한다
- 공유 리소스 관리
- 전역적 접근점을 제공함으로, 단일 인스턴스가 공유되도록 할 때 유용하다.
이러한 특징점으로. 싱글톤 패턴은 게으른 초기화(Lazy Initalization)이 가능한데, 이는 인스턴스가 필요한 시점까지 전역변수의 생성을 지연할 수 있다.
그러나, 싱글톤은 메모리를 할당할 때 메모리공간에 저장되는데 이것이 한정적이라 싱글톤 베이스는 가능하면 피하는 편이 좋다.
싱글톤 베이스를 생성할 때 생성자와 소멸자를 Private으로 빼주고, 자기스스로 자기참조만 가능하도록 제한하면
더 깔끔하게 싱글톤 베이스를 사용할 수 있다.
#pragma once
template <typename T>
class Singleton
{
public:
static T* Get()
{
if (instance == nullptr)
instance = new T();
return instance;
}
static void Delete()
{
delete instance;
instance = nullptr;
}
private:
static T* instance;
};
template <typename T>
T* Singleton<T>::instance = nullptr;
싱글톤 패턴을 구현하면 위와같다.
728x90
'디자인 패턴' 카테고리의 다른 글
Obserever 옵저버 패턴 (0) | 2023.11.14 |
---|---|
빌더 패턴(Builder Pattern) (0) | 2023.05.10 |
추상 팩토리 패턴( Abstract Factory Pattern ) (0) | 2023.05.05 |