반응형
Sigletone Pattern (C++)
목적
프로그램 내에서 어떤 클래스가 오직 한 개의 인스턴스만 갖도록 보장하고 접근 할 수 있는 인터페이스를 제공한다.
자주 사용되지만 여러 인스턴스가 생성될 필요가 없는 경우 사용된다. (예 dbconnection, networking, config ...)
c++에서 쓰레드 안전성을 위해 local static 변수를 활용하여 static Instance() 인터페이스를 구현했다.
전역 변수와 차이가 없어보이나 다음과 같은 이점이 있다.
1. 인스턴스를 인터페이스를 통해 유일하게 접근함.
2. name space를 좁혀줌
그러나 싱글톤을 남용할 경우 클래스간의 결합도가 커지는 문제점이 있다.
사용 시나리오
- 프로그램 내에서 네트워크에 접속하고 종료하는 기능을 하나의 인스턴스를 통해서 수행한다.
[Singleton]
class NetworkManager {
public:
static NetworkManager* Instance() {
static NetworkManager networkManager;
return &networkManager;
}
void connect() {
cout<<"connect..."<<endl;
}
void disconnect() {
cout<<"disconnect..."<<endl;
}
private:
NetworkManager(){}
};
[사용 예]
int main(int argc, const char * argv[]) {
NetworkManager* networkManager = NetworkManager::Instance();
networkManager->connect();
networkManager->disconnect();
return 0;
}
실행 결과
connect...
disconnect...
반응형
'Design Patterns > Creational Patterns' 카테고리의 다른 글
Prototype Pattern (C++) (0) | 2019.09.13 |
---|---|
Builder Pattern (C++) (0) | 2019.08.24 |
Factory Method Pattern (C++) (0) | 2019.02.06 |
Abstract Factory Pattern (C++) (0) | 2018.11.17 |
Creational Pattern (생성 패턴) (0) | 2018.11.11 |