싱글턴 패턴, Singleton Pattern
싱글턴 패턴은 소프트웨어 디자인 패턴의 하나로, 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 패턴입니다. 이는 전역 변수를 사용하지 않고 객체에 대한 전역 접근을 제공하려는 경우에 유용합니다.
예제 코드
#include <iostream>
class Singleton {
private:
static Singleton* instance; // 싱글턴 인스턴스를 저장할 정적 멤버 변수
Singleton() {} // 생성자는 비공개
public:
// 복사 생성자와 대입 연산자를 삭제하거나 비공개로 만듭니다.
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
// 싱글턴 인스턴스에 대한 전역 접근점을 제공하는 정적 메소드
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
void demoFunction() {
std::cout << "싱글턴 패턴의 함수 작동 예시" << std::endl;
}
};
// 정적 멤버 변수 초기화
Singleton* Singleton::instance = nullptr;
int main() {
// 싱글턴 인스턴스에 접근
Singleton* singleton = Singleton::getInstance();
singleton->demoFunction();
return 0;
}
구현 시, 중점 사항
1. 싱글턴 클래스 정의: 싱글턴 클래스는 자신의 유일한 인스턴스를 저장할 정적 멤버 변수, 외부에서 인스턴스에 접근하기 위한 정적 메소드, 그리고 복사 생성자와 대입 연산자를 삭제하거나 비공개로 만듦으로써 외부에서 객체를 복제하거나 대입할 수 없게 합니다.
2. 정적 메소드 제공: 이 메소드는 싱글턴 인스턴스에 대한 전역 접근점 역할을 합니다. 일반적으로 이 메소드는 인스턴스가 아직 생성되지 않았다면 생성하고, 이미 있다면 이를 반환합니다.
언제 사용하면 좋을까?
싱글턴 패턴은 리소스 관리, 로깅, 드라이버 객체, 하드웨어 인터페이스 접근 등 다양한 상황에서 유용하게 사용될 수 있습니다.
유의할 것
싱글턴 패턴의 사용은 프로그램의 테스트를 어렵게 하고, 전역 상태를 증가시키므로 신중하게 고려하여 사용해야 합니다.
'프로젝트 > 주식 시장 분석 도구' 카테고리의 다른 글
Study - Singleton Pattern 2 (0) | 2024.03.27 |
---|---|
study - vcpkg (0) | 2024.03.27 |
설계 - 데이터 수집 모듈 (0) | 2024.03.24 |
요구 사항 분석 및 개발 모듈 (0) | 2024.03.24 |