디자인패턴
싱글턴 패턴(Singleton Pattern)
ppp5500
2022. 4. 1. 00:23
싱글턴 패턴은 객체가 오직 하나만 생성되는 것을 보장하고 어디에서든 이 객체에 접근할 수 있도록 하는 디자인 패턴이다.
Singleton |
-instance |
-Singleton() +getInstance() |
다이어그램으로 표현하면 이렇다.
객체가 하나만 생성되고 어디에서든 호출 가능하므로 여러곳에서 호출한 횟수가 누적되어야 하는 경우 등에서 유용하다.
using System.Threading;
int user_num = 5;
Thread[] users = new Thread[user_num];
for(int i = 0; i < users.Length; i++)
{
users[i] = new Thread(run);
users[i].Start();
}
void run()
{
Printer printer = Printer.getPrinter();
printer.print("Thread number: "+Thread.CurrentThread.ManagedThreadId);
}
public class Printer
{
private static Printer printer = new Printer();
private int Counter = 0;
private Printer() { }
public static Printer getPrinter()
{
if(printer == null)
{
try
{
Thread.Sleep(1000);
}
catch (TimeoutException) { }
printer = new Printer();
}
return printer;
}
public void print(String str)
{
Counter++;
Console.WriteLine(Counter+" - "+str);
}
}
객체가 하나만 생성되고 유지되어 각각 다른 쓰레드에서 호출하였어도 카운터가 유지된다.