[Computer Science]/[디자인 패턴]

[디자인패턴] 싱글톤 패턴(Singleton Pattern)

극꼼 2022. 5. 14. 12:51
반응형


1. 싱글톤 패턴이란?

2. 싱글톤 패턴의 장단점

3. 싱글톤 패턴 예시 코드


1. 싱글톤 패턴(Singleton Pattern)이란?

: 해당 클래스의 인스턴스가 하나만 생성되게 하고, 어디서든 그 인스턴스에 접근할 수 있도록 하는 패턴입니다. 주로 시스템 자원이나 정보를 관리하는 용도로 사용합니다. 

 

2. 싱글톤 패턴의 장단점

* 장점 : 모든 데이터를 전역으로 관리하기 때문에 쉽게 접근할 수 있고, 초기 객체를 생성하게 되면 정적 메모리에 올라가기 때문에 호출이 빠릅니다. 중복 생성과 메모리 낭비를 방지할 수 있습니다. 

 

* 단점 : 정적 메모리(static)에 할당된 객체이기 때문에 메모리 크기가 제한적이라 너무 큰 메모리가 쌓이게 될 경우 프로그램의 성능이 낮아집니다. 하나의 정적 메모리를 사용하기 때문에 병렬처리나 동기화와 같이 여러 방법으로 메모리게 접근하는데 문제가 생깁니다. 너무 많은 데이터를 공유할 경우, 싱글톤 인스턴스와 다른 클래스 인스턴스들 간의 결합도가 높아져 개방폐쇄원칙(확장에는 열려 있어야 하고, 변경에는 닫혀있어야 한다)에 위배될 수 있습니다. 

3. 싱글톤 패턴 예시 코드(C#)

* 주의할 점 : 상태를 가진 객체를 싱글톤으로 만들어선 안 됩니다. 앱 내에 한개의 싱글톤이 존재하고, 이를 전역에서 접근할 수 있다면 각자 다른 스레드에서 객체의 상태를 마구 변경시킬 여지가 있기 때문입니다.

 

public class DataManager
{
    public static DataManager _instance = null;
    void Awake()
    {
        if (_instance == null)
        {
            _instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
            return;
        }
    }
}

 

 

반응형