728x90
📕싱글톤 디자인 패턴(Singleton Design Pattern)
싱글톤 패턴이란 클래스의 인스턴스를 하나만 생성해서 전역적으로 사용하게 하는 디자인 패턴이다. 싱글톤을 사용하면 해당 클래스의 인스턴스를 생성하지 않고도 외부에서 참조할 수 있기 때문에 특정 자원을 여러 클래스와 공유할 때 효과적이다.
다음은 싱글톤을 구현할 때 고려해야 할 몇 가지 사항이다.
- 생성자의 접근제한자는 private이어야 하며 매개 변수는 없어야 한다. 이는 외부에서 생성되는 것을 막기 위해서이다.
- 클래스는 상속될 수 없도록 sealed 한정자를 사용해 선언해야 한다.
- 싱글톤 클래스의 인스턴스를 참조하고 싶을 땐 private으로 선언한 정적 변수를 통해 참조해야 한다.
- 싱글톤 인스턴스를 반환할 정적 프로퍼티(혹은 메서드)를 public으로 생성한다. 생성한 프로퍼티는 싱글톤 클래스의 인스턴스가 존재하는지 확인하고, 존재한다면 싱글톤 클래스의 인스턴스를 반환한다. 만약 존재하지 않는다면 직접 인스턴스를 생성한 뒤 반환한다.
📖싱글톤 구현하기
namespace SingletonDemo
{
public sealed class Singleton
{
private static int counter = 0;
private static Singleton instance = null;
public static Singleton GetInstance
{
get
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
private Singleton()
{
counter++;
Console.WriteLine("Counter Value " + counter.ToString());
}
public void PrintDetails(string message)
{
Console.WriteLine(message);
}
}
}
Singleton 클래스를 sealed로 선언한 뒤 private을 사용해 생성자를 만들었다. 외부에서 Singleton 클래스에 접근할 땐 GetInstance 프로퍼티를 호출하면 된다.
namespace SingletonDemo
{
class Program
{
static void Main(string[] args)
{
Singleton fromTeachaer = Singleton.GetInstance;
fromTeachaer.PrintDetails("From Teacher");
Singleton fromStudent = Singleton.GetInstance;
fromStudent.PrintDetails("From Student");
Console.ReadLine();
}
}
}
실행 결과는 다음과 같다.
Counter Value 1
From Teacher
From Student
GetInstance를 두 번 호출했는데도 싱글톤 인스턴스는 하나만 생성된 것을 볼 수 있다.
🔖인용한 사이트
https://dotnettutorials.net/lesson/singleton-design-pattern/
Singleton Design Pattern in C#
In this article, I am going to discuss Singleton Design Pattern in C# with Example. Singleton Design Pattern ensures that only one instance
dotnettutorials.net
728x90