//싱글톤은 애초에 어디서 생성되는지 얼마나 생성하던지 항상 같은 하느의 인스턴스로 이동되도록 하는 디자인 패턴이다
// factory
싱글톤 패턴은 객체지향 프로그래밍에서 자주 사용되는 디자인 패턴 중 하나로, 오직 하나의 인스턴스만을 생성하고 그 인스턴스에 접근할 수 있는 전역적인 접근점을 제공하는 패턴입니다. 이 글에서는 C++에서 싱글톤 패턴을 구현하는 방법과 사용하는 이유에 대해 알아보겠습니다.
싱글톤 패턴을 사용하는 이유는 다음과 같습니다.
싱글톤 패턴은 디자인 패턴 중 하나로, 오직 하나의 인스턴스만을 생성하고 그 인스턴스에 접근할 수 있는 전역적인 접근점을 제공하는 패턴입니다. 이러한 패턴은 여러 개의 인스턴스가 생성되면 문제가 발생하는 경우에 사용됩니다.
싱글톤 패턴을 사용하는 이유는 다음과 같습니다.
하나의 인스턴스만을 생성하므로 메모리 관리가 용이합니다.
인스턴스에 대한 전역적인 접근점을 제공하므로, 코드 전체에서 인스턴스를 공유할 수 있습니다.
여러 개의 인스턴스가 생성되면 문제가 발생하는 경우에 사용됩니다.
C++에서 싱글톤 패턴을 구현하는 방법은 다음과 같습니다.
class Singleton {
private:
static Singleton* instance;
Singleton() {}
public:
static Singleton* getInstance() {
if (instance == NULL) {
instance = new Singleton();
}
return instance;
}
};
Singleton* Singleton::instance = NULL;
int main() {
Singleton* s1 = Singleton::getInstance();
Singleton* s2 = Singleton::getInstance();
if (s1 == s2) {
cout << "s1과 s2는 같은 인스턴스입니다." << endl;
}
return 0;
}
class FileSystem {
public:
FileSystem() {
assert(!instantiated_); // 단언문 - 인수 값이 참이면 아무것도 하지 않지만, 거짓이면 그 자리에서 코드를 중지한다.
instantiated_ = true;
}
~FileSystem() {
instantiated_ = false;
}
private:
static bool instantiated_;
};
bool FileSystem::instantiated_ = false;
싱글톤 패턴은 하나의 인스턴스만을 생성하고 그 인스턴스에 대한 전역적인 접근점을 제공하는 패턴입니다. 이를 통해 메모리 관리가 용이해지고, 코드 전체에서 인스턴스를 공유할 수 있습니다. 따라서, 여러 개의 인스턴스가 생성되면 문제가 발생하는 경우에 사용됩니다.