반응형
싱글톤(Singleton) 이란?
자기 자신을 static 형식으로 보유하고 있는 클래스로,
객체의 인스턴스가 오직 하나만 생성되는 디자인 패턴이다.
싱글톤의 기본 구조 - C++
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class Singleton
{
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance()
{
return instance;
}
}
|
cs |
템플릿을 활용한 싱글톤 - Unity(C#)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
public class Singleton<T> : MonoBehaviour where T : Component
{
private static T instance;
public static T Instance
{
get
{
if (instance == null)
{
instance = FindObjectOfType<T>();
if (instance == null)
{
GameObject gameObject = new GameObject("Controller");
instance = gameObject.AddComponent<T>();
}
}
return instance;
}
}
public void Awake()
{
DontDestroyOnLoad(gameObject);
//as연산 : E as T -> E는 값을 반환하는 식이고, T는 형식 또는 형식 매개 변수의 이름입니다.
if (instance == null)
instance = this as T;
else
{
if (instance != this)
Destroy(gameObject);
}
}
}
|
cs |
싱글톤의 패턴의 장점
1. 클래스간의 데이터 공유가 쉽다.
전역변수의 역할을 하는 싱글톤이기 때문에 다른 클래스에서 접근하기가 용이하다.
2. 한번의 new로 인스턴스를 사용하기 때문에 메모리 효율이 좋다.
3. 어떤 상황에서든 강제적으로 단 하나만 존재한다.
싱글톤의 단점
1. 클래스간의 데이터 공유가 쉽다.
쉽게 접근이 가능하다는 뜻은 예기치 못한곳에서 접근을 할 수 있기 때문에 그 자체로 장점이자 단점이다.
2. 멀티쓰레드 환경에서 동시성 문제가 일어날 수 있다.
동시성 문제 : 여러 스레드가 같은 메모리에 접근하는 현상으로, 중간에서 꼬여 다른 값이 나올 수 있다.
반응형
'코딩 > 알고리즘' 카테고리의 다른 글
디자인 패턴 - 컴포넌트 패턴 (Component) (0) | 2022.06.26 |
---|---|
내적 (0) | 2022.01.05 |
백트래킹(Backtracking) 알고리즘 (0) | 2021.07.30 |
에라토스테네스의 체 알고리즘 (0) | 2021.04.08 |
그리디(Greedy) 알고리즘 (0) | 2021.04.06 |
댓글