-
싱글턴 패턴을 사용해 인스턴스가 하나뿐인 객체를 만들 수 있다. 이 패턴이 적용된 객체는 하나만 생성될 수 있고, 어디서든 접근할 수 있다. 스레드 풀, 캐시, 대화상자, 설정, 디바이스 드라이버 등 클래스의 객체가 오직 하나만 생성되는 경우 사용한다.
기본적인 싱글턴 패턴
싱글턴 패턴 클래스는 private static 스스로의 객체(_instance) 를 갖는다. protected를 통해 기본 생성자를 클래스 외부에서 호출할 수 없게 하고, 새로운 public static 메소드를 통해 만들어진 객체가 없을 때만 작동하는 생성자를 만든다.
Lock object 를 추가한 싱글턴
멀티 스레드 애플리케이션에서 동시에 인스턴스를 호출하는 경우를 대비해 Lock object를 추가할 수 있다. 특정 블럭의 코드를 하나의 스레드만 실행할 수 있게 한다.
C#을 사용해 최척화한 싱글턴
C#의 private 생성자, readonly(읽기 전용)와 seal(상속 봉인)을 사용해 최척화할 수 있다.
Unity 예제 코드
private static BattleSimulator _instance; public static BattleSimulator Instance { get { return _instance; } } private void Awake() { if (_instance != null && _instance != this) { Destroy(this.gameObject); return; } _instance = this; DontDestroyOnLoad(this.gameObject); }