Singleton Pattern

Yongs12 ㅣ 2024. 2. 1. 18:02

 

싱글톤 클래스 예시

#pragma once

/*=================================
		Singleton Pattern
=================================*/

/*
클래스의 인스턴스를 오직 하나만 존재하게 하고 전역 접근점을 제공하는 패턴 방법
데이터베이스 연결, 로그 기록등과 같이 리소스를 관리할 때 사용한다.

장점
ㄴ 접근성 : 싱글톤 객체는 전체에서 쉽게 접근하여 여러 클래스에서 동일한 객체를 공유한다.
ㄴ 일관성 : 여러 곳에서 동일한 객체를 사용하기 때문에 데이터가 동일하다.
ㄴ 지연 초기화 : 필요할 때만 객체를 생성하는 방법이 가능하다.

단점
ㄴ 유연성 : 싱글톤은 클래스의 객체를 고정하므로 나중에 다른 구현체로 교체하기 어렵다.
*/

#include <iostream>

class Singleton
{
public:
	static Singleton& getInstance()
	{
        static Singleton instance;
		return single;
	}
	
	void print()
	{
		std::cout << "싱글톤 함수 사용" << std::endl;
	}

private:
	// 객체 생성을 못하게 생성자를 private으로 접근 막기
	Singleton() {}
	~Singleton() {}

	// 복사 생성자와 대입 연산자를 private으로 설정하여 복사 방지
	Singleton(const Singleton&) = delete;
	Singleton& operator=(const Singleton&) = delete;
};

 

 

 

싱글톤 사용

#include "Singleton.h"

int main()
{
	Singleton::getInstance().print();

	return 0;
}

 

결과

 

'Design Pattern' 카테고리의 다른 글

State Pattern  (0) 2024.02.06
Observer Pattern  (0) 2024.02.05
Prototype Pattern  (0) 2024.02.04
Builder Pattern  (0) 2024.02.03
Factory Pattern  (0) 2024.02.02