Singleton 디자인패턴

싱글톤패턴

클래스에 대한 오직 하나의 인스턴스 만이 허용되는 패턴이다.
이를위해 생성자를 private로 선언하여 외부에서 인스턴스를 생성하는것을 방지한다.
싱글톤 패턴을 사용할땐 다중 스레드에 주의해야 한다.

스레드에 안전한 코드는 다음과 같다.

Singleton
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Singleton {
public:
static Singleton* getInstance() {
if (instance == 0) {
Lock lock;
if (instance == 0 ){
instance = new Singleton;
}
}
return instance;
}

private:
Singleton() {}
static Singleton* instance;
};

클래스가 적재되는순간 즉 더 빠르게 인스턴스화를 하기 위해서는 아래와 같이 코드를 작성하면 된다. 이 또한 스레드에 주의해서 작성해야 한다는것을 잊지말자.

Singleton
1
2
3
4
5
6
7
8
class Singleton {
static Singleton instance = new Singleton();
Singleton() {}
public:
static Singleton getInstance() {
return instance;
}
};
Share