디자인패턴 공부

싱글톤 패턴 (Singleton)

ogh4554 2024. 11. 16. 23:07

디자인 패턴 공부를 하면서 가장 먼저 알게됐던 패턴.

 

1. 싱글톤 패턴이란?

 - 프로그램 내에서 단 하나의 객체만 존재하는 컨트롤 타워로써 프로그램의 시작부터 종료까지 생존하면서 데이터 관리의 이점을 가져오는 디자인 패턴

 - 게임 내에서 가장 많이 사용되는 디자인 패턴 중 하나

 

2. 장단점

1) 장점

 - 단일의 인스턴스와 전역적인 접근을 보장하기 때문에 싱글톤을 사용해 오브젝트들이 서로를 참조하고 있는 결합도를 낮출 수 있음

 - 게임 내에서 파괴되지 않기 때문에 보다 편하게 데이터를 관리할 수 있음

 

2) 단점

 - 전역적인 접근이 가능하기 때문에 데이터에 대한 보호수준을 주의하지 않으면 의도치 않은 데이터 변화가 발생할 수 있음

 - 객체들이 싱글톤 객체의 데이터에 의존하게 되는 현상이 발생할 수 있음

 - static을 사용해 정적 메모리에 할당되므로, 싱글톤이 많아질수록 가용 메모리가 적어짐

 

 

3. 사용방법

public class GameManager : MonoBehaviour
{
    public static GameManager instance = null; 

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            if (instance != this)
                Destroy(gameObject);
        }
    }
}

 

 - 위의 코드는 대표적으로 사용하는 싱글톤객체인 게임매니저를 예시로 한 코드임.

 - 자신과 똑같은 객체가 있다면 삭제하고 씬을 옮기더라도 삭제되지 않도록 설정함으로써 보유하고 있는 데이터를 씬이 바뀌더라도 보존하면서 사용할 수 있고 static으로 전역적인 접근이 가능해지기 때문에 어디서나 데이터를 얻거나 수정할 수 있음.

 - 빈 오브젝트를 만들고 해당 스크립트를 부여한 뒤 가장 처음에 사용하는 씬에서 사용함으로써 활용 가능함.

+ 너무 과도한 사용은 지양하도록 하자.