Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 싱글톤(Singleton) 클래스 완벽 가이드: 개념부터 구현까지

싱글톤(Singleton) 클래스는 데이터의 단일 할당과 하나뿐인 인스턴스 생성만 허용하는 디자인 패턴입니다. 일반적인 메서드를 포함할 수 있으며, 인스턴스를 통해 해당 메서드들을 호출할 수 있습니다.

클래스의 여러 인스턴스가 생성되는 것을 방지하려면 private 생성자를 사용해야 합니다. 외부에서 new 키워드로 객체를 생성하지 못하도록 차단함으로써, 프로그램 전체에서 단 하나의 인스턴스만 존재하도록 보장할 수 있습니다.

싱글톤 클래스의 기본 구조

public class Singleton {
    static Singleton b = null;
    private Singleton() {
    }
}

생성자를 private으로 선언하면 클래스 외부에서의 인스턴스화가 불가능해집니다. 대신 정적(static) 멤버를 통해서만 유일한 인스턴스에 접근하게 됩니다.

싱글톤 클래스 구현 예제

다음은 싱글톤 클래스를 실제로 구현하고 사용하는 방법을 보여주는 완전한 예제입니다.

using System;

class Singleton {
    public static readonly Singleton _obj = new Singleton();

    public void Display() {
        Console.WriteLine(true);
    }
    Singleton() {}
}

class Demo {
    public static void Main() {
        Singleton._obj.Display();
    }
}

출력 결과

True

코드 설명

public static readonly Singleton _obj = new Singleton(); — static readonly 필드를 사용해 클래스가 처음 로드될 때 단 한 번만 인스턴스가 생성됩니다. readonly 키워드 덕분에 런타임 중에 참조가 변경되지 않습니다.

Singleton() {} — private 생성자로 선언되어 있어 외부에서 new Singleton()으로 새 인스턴스를 만들 수 없습니다.

Singleton._obj.Display(); — Main 메서드에서는 정적 필드 _obj를 통해 유일한 인스턴스에 접근하여 Display 메서드를 호출합니다.

싱글톤 패턴의 장점

  • 불필요한 객체 생성을 막아 메모리와 리소스 사용을 최적화할 수 있습니다.
  • 데이터베이스 연결, 로깅, 설정 관리 등 공유 자원 관리에 적합합니다.
  • 전역 상태에 대한 통합된 접근점을 제공합니다.