프로그래밍 공부
카테고리
작성일
2023. 10. 10. 19:30
작성자
WDmil
728x90

객체 지향 프로그래밍에서 중요한 디자인 패턴으로,

 

특정 클래스가 단 하나의 인스턴스만 가지도록 보장하고, 그 인스턴스에 대한 전역적인 접근점을 제공한다.

 

즉, 전역변수로 선언한것과 같은 역할을 한다고 이해하면 된다.

 

특징

  1. 인스턴스 제한.
    1. 싱글톤 패턴은 인스턴스가 한개만 존재하도록 제한한다.
  2. 전역적인 접근점 제공
    1. 어디서든 해당 인스턴스에 접근할 수 있는 접근점을 제공한다
  3. 공유 리소스 관리
    1. 전역적 접근점을 제공함으로, 단일 인스턴스가 공유되도록 할 때 유용하다.

 

이러한 특징점으로. 싱글톤 패턴은 게으른 초기화(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