싱글톤 패턴 (Singleton Patton)
싱글톤 패턴이란 클래스의 인스턴스를 오직 하나만 생성하도록 보장하는 디자인 패턴이다.
이를 통해 전역적으로 접근할 수 있는 유일한 객체를 제공하며 보통 설정, 데이터 관리, 게임 메니저 등에서 활용된다.
싱글톤 구현
public class Singleton
{
private static Singleton instance; // 인스턴스 저장 변수
private static readonly object lockObject = new object(); // 동기화를 위한 객체
// 외부에서 객체 생성 금지
private Singleton() { }
public static Singleton Instance
{
if (instance == null)
{
if (instance == null)
{
instance = new Singleton();
}
}
return instance;
}
public void SingletonCalling()
{
Console.WriteLine("싱글톤 인스턴스의 메서드 호출!");
}
}
싱글톤 패턴 장/단점
장점
- 전역 접근 가능 - 어디서든 동일한 인스턴스를 쉽게 사용할 수 있다
- 메모리 절약 - 하나의 인스턴스만 유지하여 불필요한 객체 생성을 방지한다.
- 데이터 일관성 유지 - 전역적으로 동일한 데이터를 유지할 수 있어 설정값이나 상태 관리가 편리하다.
단점
- 테스트가 어려움 - 의존성 주입이 어렵기 때문에 단위 테스트 작성이 어려워질 수 있다.
- 의존성이 높아짐 - 특정 클래스에 강하게 결합되어 유지보수가 어려워질 수 있다.
- 멀티스레드 환경에서 동기화 문제 발생 가능 - 다중 스레드 환경에서 예상하지 않은 버그가 발생할 수 있다.
싱글톤 패턴 사용 시 주의할 점
1. 불필요한 싱글톤 남용 금지
- 모든 클래스를 싱글톤으로 만들면 코드가 복잡해지고 유지보수가 어려워진다.
- 전역 상태를 너무 많이 공유하면 예상치 못한 버그가 발생할 가능성이 높다.
2. 멀티스레드 환경 고려
- 싱글톤이 여러 스레드에서 동시에 접근될 경우, lock을 사용하여 안전하게 동작하도록 해야 한다.
3. 유닛 테스트 어려움 해결
- 인터페이스 또는 의존성 주입을 사용하여 테스트 가능하도록 설계하는 것이 좋다.
결론
싱글톤 패턴을 잘 사용하면 메모리 절약을 하면서 전역에서 접근이 가능하지만, 무분별하게 사용하면 유지보수가 어려워질 수 있다.
'내일배움캠프 > C# 이론' 카테고리의 다른 글
C# 입문 (변수와 자료형) (0) | 2025.01.24 |
---|