White Whale Studio

Singleton Pattern / 싱글톤 패턴 본문

IT Engineering/객체지향&디자인 패턴

Singleton Pattern / 싱글톤 패턴

glorymind 2016. 6. 24. 15:42
반응형

싱글톤 패턴은 하나의 Class 에 하나의 Instance를 가지는 패턴입니다.


개인적으로 가장 이해하기 쉬웠던 예는 TraceManager의 예제였습니다.


에러나 프로세스 정보를 기록하기위해서 사용하는 TraceManager는 다양한 클래스에서 참조할 것이고 참조할 때마다 객체를 생성해서 사용


해야만 한다면 분명히 자원을 많이 잡아먹게 될것입니다.


이러한 경우에 TraceManager를 구현 시에 싱글톤 패턴으로 구현을 하면 될것 같군요.


구현 후에는 프로그램 구동 후 종료가 될때까지 TraceManager의 1개의 인스턴스로 로깅을 남길 수 있습니다.


객체 중에서 하나 이상 존재하게 되는 경우 프로그램에 문제가 될수있다거나 자원을 많이 잡아먹을 가능성이 있는 다른 예를 들어보면, 대화상자나 사용자 설정, 레지스트리 설정 처리 등등이 있겠습니다.


특징을 살펴보면 

1.  하나의 Class 에 하나의 Instance를 가진다.

2. 다른 클래스에서 해당 객체를 생성할 수 없다. 생성자가 private

3. 어디서든지 접근이 가능하다. => 정적 메서드로 Instance를 Get할 수 있도록 정의합니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Singleton
    {
        private static Singleton singleInstance;
 
        private Singleton() { }
 
        public static Singleton GetInstance()
        {
            if (singleInstance == null)
            {
                singleInstance = new Singleton();
            }
 
            return singleInstance;
        }
 
        public void DoSomething()
        {
            Console.WriteLine("tt");
        }
    }
cs


전통적인 싱글톤의 형태는 위와 같습니다만, 위와같은 코드는 멀티쓰레드환경에서 Singleton 객체가 2개가 생성될 수도 있습니다.

이를 막기위한 방법으로는 Instance를 처음부터 만드는 방법과 DCL(Double Checked Locking)방법을 쓰는 방법이 있습니다.

반응형
Comments