싱글톤 패턴이란?
- 객체의 인스턴스가 오직 하나만 생성되는 패턴
장점
- 최초 한 번만 고정된 메모리 영역을 할당 받고 사용하기 때문에 메모리가 낭비되지 않는다
- 다른 클래스 간에 데이터 공유가 쉬워진다
단점
- 여러 클래스의 인스턴스에서 데이터에 동시에 접근하게 되면 동시성 문제가 발생할 수 있다
- 자원이 공유되기 때문에 매번 인스턴스의 상태를 초기화하지 않으면 테스트를 온전하게 수행할 수 없다
- 자식 클래스를 만들 수 없다
Unity에서의 싱글톤 패턴 구현
public class GameManager : MonoBehaviour
{
static GameManager s_Instance;
public static GameManager Instance { get { Init(); return s_instance } }
void Start()
{
Init();
}
//Init()을 static으로 선언할 경우, 클래스명으로 접근하여 초기화가 가능
static void Init()
{
if(s_Instance == null)
{
GameObject object = GameObject.Find("GameManager");
//GameManager 오브젝트가 없을 경우
if(object == null)
{
//GameManager라는 이름의 게임오브젝트 생성
object = new GameObject { name = "GameManager" };
//생성한 오브젝트에 GameManager 컴포넌트를 추가
object.AddComponent<GameManager>();
}
//생성한 오브젝트가 씬이 변환되어도 파괴되지 않도록 설정
DontDestroyOnLoad(object);
s_Instance = object.GetComponent<GameManager>();
}
}
}
위와 같이 구현된 싱글톤 인스턴스는 다음과 같이 접근하여 사용할 수 있다.
public class Test : MonoBehaviour
{
void Start()
{
GameManager gm = GameManager.Instance;
}
}
Reference - https://tecoble.techcourse.co.kr/post/2020-11-07-singleton/
반응형
'C#' 카테고리의 다른 글
[C#] 프로퍼티 (Property) get, set (0) | 2023.08.30 |
---|---|
[C#] 인터페이스 (Interface) (0) | 2023.08.24 |
[C#] 일반화 (Generic) (0) | 2023.08.23 |
댓글