C# 싱글톤

김건호·2023년 12월 20일
0

C#

목록 보기
18/22

싱글톤 패턴은 한 개의 인스턴스만 생성하고, 어디서든 그 인스턴스에 접근할 수 있는 디자인 패턴입니다.

  1. 전역적인 상태나 리소스에 접근: 싱글톤은 어디서든 접근할 수 있는 전역적인 상태나 리소스에 대한 중앙 집중적인 접근을 제공합니다. 예를 들어, 게임의 설정, 오디오 관리자, 이벤트 매니저 등을 싱글톤으로 구현할 수 있습니다. 한 가지의 상태로, 하나가 주가 되어서 관리했으면 좋겠다!

  2. 중복 인스턴스 방지: 싱글톤 패턴을 사용하면 오직 한 개의 인스턴스만 생성되므로, 중복 인스턴스를 방지할 수 있습니다. 이는 리소스 낭비나 예기치 않은 동작을 방지하는 데 도움이 됩니다.

  3. 객체 간 편한 통신: 싱글톤 인스턴스는 어디서든 접근할 수 있으므로, 객체 간의 통신이 편리해집니다. 다른 객체에서 싱글톤 인스턴스를 사용해 데이터를 공유하거나 메서드를 호출할 수 있습니다. // 슈퍼싱글톤 → 단일책임원칙 망가짐 → 유지보수성 떨어지고, 결합도 높아짐

  4. 유지보수 및 확장성: 싱글톤 패턴은 코드의 유지보수성과 확장성을 향상시킵니다. 인스턴스에 대한 접근이 중앙 집중화되므로, 코드의 변경이나 기능의 추가/변경이 용이해집니다. 또한, 싱글톤 인스턴스를 사용하는 객체들 사이의 결합도를 낮출 수 있어 유지보수성을 향상시킵니다.


싱글톤 예시

public class GameManager : MonoBehaviour
{
    public static GameManager Instance { get; private set; }

    void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
        }
        else
        {
            Destroy(gameObject); // 중복 인스턴스가 생성될 경우 제거
        }
    }
}




씬 전환 싱글톤

public class GameManager : MonoBehaviour
{
    public static GameManager Instance { get; private set; }

    void Awake() // 게임오브젝트가 처음으로 켜진 그 순간
    {
        if (Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject); // 씬 전환 시 파괴되지 않도록 설정
        }
        else
        {
            Destroy(gameObject); // 중복 인스턴스가 생성될 경우 제거
        }
    }

		public void Init(){
				// 초기 세팅
		}
}
profile
콜라게임

0개의 댓글

관련 채용 정보