반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 웹프로그래밍
- 리눅스
- javascript
- vscode
- 개발환경
- Django
- Design Pattern
- DB
- 웹서버
- 파이썬
- 디자인 패턴
- html
- 프로그래밍
- MySQL
- 인공지능
- 디자인패턴
- 백엔드
- django-debug-toolbar
- pytorch
- pyvenv.cfg
- 파이토치
- css
- java
- python
- csrf_token
- 오류
- Linux
- 프론트엔드
- AI
- 데이터베이스
Archives
- Today
- Total
Shong Studio의 정보 창고
싱글톤(Singleton)패턴 - Cursor 예제로 한방에 이해하기 본문
728x90
반응형
싱글톤(Singleton) 패턴은 클래스의 인스턴스가 하나만 존재하도록 보장하고, 그 인스턴스에 전역 접근을 제공하는 패턴입니다.
이를 통해 특정 클래스의 인스턴스를 하나로 제한할 수 있습니다.
C++에서 싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 기본적인 구현 방식을 설명드리겠습니다.
다음은 Cursor
클래스를 싱글톤 패턴으로 구현하는 예제입니다:
#include <iostream>
#include <memory> // std::unique_ptr
class Cursor {
private:
// 생성자를 private으로 선언하여 외부에서 인스턴스를 생성하지 못하게 함
Cursor() {
std::cout << "Cursor created\n";
}
// 복사 생성자와 대입 연산자를 삭제하여 복사 및 대입을 금지
Cursor(const Cursor&) = delete;
Cursor& operator=(const Cursor&) = delete;
public:
// 정적 메서드를 통해 접근 가능한 유일한 인스턴스를 반환
static Cursor& getInstance() {
static Cursor instance;
return instance;
}
// 필요한 메서드 추가
void doSomething() {
std::cout << "Doing something with the cursor\n";
}
};
int main() {
// Cursor c1; // 불가능: 생성자가 private으로 선언되어 있음
// Cursor c2 = Cursor::getInstance(); // 불가능: 복사 생성자가 삭제됨
Cursor& cursor1 = Cursor::getInstance();
cursor1.doSomething();
Cursor& cursor2 = Cursor::getInstance();
cursor2.doSomething();
// cursor1과 cursor2는 동일한 인스턴스를 참조함
if (&cursor1 == &cursor2) {
std::cout << "cursor1 and cursor2 are the same instance\n";
}
return 0;
}
설명
private 생성자:
Cursor
클래스의 생성자를private
으로 선언하여 외부에서 직접 인스턴스를 생성할 수 없도록 합니다.
삭제된 복사 생성자와 대입 연산자:
Cursor
클래스의 복사 생성자와 대입 연산자를delete
키워드로 삭제하여 클래스의 복사 및 대입을 금지합니다. 이를 통해 클래스의 인스턴스가 여러 개 생성되는 것을 방지합니다.
정적 메서드
getInstance
:getInstance
메서드는Cursor
클래스의 유일한 인스턴스를 반환합니다. 이 메서드는 정적 메서드로 정의되어 있으므로 클래스의 인스턴스를 생성하지 않고도 호출할 수 있습니다.static Cursor instance;
는 함수 내에 정적 지역 변수를 선언하여 유일한 인스턴스를 생성하고, 이를 반환합니다. 이 정적 변수는 처음 호출될 때만 초기화되므로, 싱글톤 인스턴스가 한 번만 생성됩니다.
사용 예:
Cursor& cursor1 = Cursor::getInstance();
를 통해 싱글톤 인스턴스에 접근합니다.- 여러 번
getInstance
를 호출해도 동일한 인스턴스를 반환합니다. cursor1
과cursor2
가 동일한 인스턴스를 참조하는지 확인할 수 있습니다.
이 구현을 통해 Cursor
클래스는 애플리케이션 내에서 하나의 인스턴스만 존재하게 되며, 전역 접근을 제공합니다.
728x90
반응형
'프로그래밍 언어' 카테고리의 다른 글
C++ 람다식 다뤄보기 (0) | 2024.05.29 |
---|