관리 메뉴

개발블로그

싱글턴패턴(Singleton Pattern) 본문

디자인패턴

싱글턴패턴(Singleton Pattern)

dvmoo 2021. 11. 20. 12:23

싱글턴 패턴은 오직 한 개의 클래스 인스턴스만 갖도록 보장하고,  그 인스턴스를 전역에서 접근할 수 있는 메서드를 제공한다.

즉, 클래스 오브젝트를 단 하나만 생성해서 여러 오브젝트가 접근할 수 있도록 하는 매니저 스크립트에 많이 사용한다.

 

c++과 c#으로 각각 싱글턴 패턴 예제 코드를 작성했다.

// c++
class FileSystem
{
public:
   static FileSystem& instance()
   {
      if(_instance == NULL)
      {
         _instance = new FileSystem();
      }
      return *_instance;
private:
      FileSystem() {}
      static FileSystem* _instance;
   };
}

 

_instance 정적 멤버변수는 클래스 인스턴스를 저장한다. 생성자가 private 이므로 밖에서는 생성할 수 없다.

public에 있는 instance() 정적 메서드는 코드 어디서나 싱글턴 인스턴스에 접근할 수 있게 하고, 

싱글턴을 실제로 필요로 할 때 까지 인스턴스 초기화를 미루는 역할도 한다.

 

// c++
class FileSystem
{
public:
   static FileSystem& instance()
   {
      static FileSystem *instance = new FileSystem();
      return *instance;
   }
   
private:
   FileSystem() {}
};

이렇게도 사용한다.

 

// c#
private static FileSystem _instance = null;

public static FileSystem Instance
{
    get
    {
    	if(_instance == null)
        {
           _instance = new FileSystem();
        }
    }
}

c#에서도 마찬가지로 private 정적 멤버변수를 선언한 후

 

 

 

 

/// 수정중 .....

 


* 공부하는 단계입니다. 잘못된 부분이 있다면 피드백 부탁드립니다.😊