본문 바로가기
C# 디자인패턴

01# 싱글턴(Singleton) 패턴

by NaHyungMin 2016. 4. 18.

한가지 인스턴스로 저장소로 사용하거나 할 때 사용하는 싱글톤 패턴입니다.

싱글톤 사용 시, 자바에서는 직렬화할 때 문제점이 있었는데, 아마 C#도 같은 문제점이 있을 거라고 예상해봅니다.

스레드 환경에서는 어떤 점유율이 높은 스레드가 후 작업을 해야 하는데 선 작업을 할 지 모르므로 적절한 제어 없이는 사용 하지 않는 것을 추천합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
        Singleton count1 = Singleton.GetInstances();
        Singleton count2 = Singleton.GetInstances();
    
        Console.WriteLine(count1.GetCount());    
        Console.WriteLine(count2.GetCount());
    }
}
 
class Singleton
{
    private Singleton singleton = null;
    private int count = 0;
 
    public static Singleton GetInstances()
    {
        if(singleton == null)
        {
            singleton = new Singleton();
        }
 
        return singleton;
    }
 
    public int GetCount()
    {
        return ++count;
    }
}
cs