반응형

[들어가기 전]

 

디자인 패턴(Design Pattern)은 객체 지향 프로그래밍에서 자주 등장하는 여러 가지 패턴을 정리해 놓은 것.싱글톤(Singleton) 패턴은 한 클래스에서 오직 하나의 객체만을 생성하는 패턴이며, 시스템에서 어떤 자원이 공유될 때 사용한다.

싱글톤 패턴은 정적 멤버 변수와 함수를 사용하는 좋은 예이다.


[설명]

 

싱글톤 패턴은 생성자를 클래스의 Public 영역이 아닌 Private 영역에 넣는다.

따라서 생성자를 호출하여서 클레스의 객체를 생성 할 수 없으며,

Public 영역에 정적 함수인 getInsetance()를 선언한다.

getInstacne() 함수는 정적 함수이므로 단 한번만 객체를 생성한다.

해당 함수를 호출하면 클래스의 객체가 반환되는 형식이다.


[싱글톤 패턴의 특징]

 1) 자신을 가리키는 정적 멤버 포인터 변수 Private 영역에 선언

 2) 자신을 반환하는 정적 멤버 함수인 getInstance() 함수 Public 영역에 선언

    - getInstance() 함수는 정적 함수이므로 단 한번만 호출되어 객체를 생성

    - getInstance() 함수를 호출하면 클래스 객체 반환

    - getInstance() 함수 내부에서 최초 호출 시 자신의 객체 생성

 2) 1개의 객체를 사용하므로 메모리 낭비를 방지

 3) 이미 생성된 객체를 활용하므로 속도 측면에서의 이점 있음

 4) 동시 접근에 대한 동기화 방안을 사전 확보하고 사용하기를 권장


[싱글톤 패턴 객체 생성]

#pragma once
#include <iostream>
using namespace std;

class Singleton
{
public:
	static Singleton* getInstance();

private:
	Singleton() {};
	static Singleton* Instance;

};

// 정적 멤버 변수이므로 Class 외부에서 반드시 초기화!!
Singleton *Singleton::Instance = nullptr;
// 정적 멤버 함수이므로 Class 외부에서 반드시 정의!!
Singleton* Singleton::getInstance()
{
	if (Instance == nullptr)
	{
		Instance = new Singleton();
	}

	return Instance;
}

 

반응형
Posted by tislqhf

블로그 이미지
개인적인 공부자료 정리하는 공간
tislqhf

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.4
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함