싱글톤패턴
클래스에 대한 오직 하나의 인스턴스 만이 허용되는 패턴이다.
이를위해 생성자를 private로 선언하여 외부에서 인스턴스를 생성하는것을 방지한다.
싱글톤 패턴을 사용할땐 다중 스레드에 주의해야 한다.
스레드에 안전한 코드는 다음과 같다.
Singleton1 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; };
|
클래스가 적재되는순간 즉 더 빠르게 인스턴스화를 하기 위해서는 아래와 같이 코드를 작성하면 된다. 이 또한 스레드에 주의해서 작성해야 한다는것을 잊지말자.
Singleton1 2 3 4 5 6 7 8
| class Singleton { static Singleton instance = new Singleton(); Singleton() {} public: static Singleton getInstance() { return instance; } };
|