싱글톀 νŒ¨ν„΄(Singleton Pattern)

2020. 5. 16. 14:10Β·πŸ“ Computer Science/✏ Design Pattern

싱글톀 νŒ¨ν„΄(Singleton Pattern)

μ „μ—­ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μΈμŠ€ν„΄μŠ€λ₯Ό ν•˜λ‚˜λ§Œ μƒμ„±ν•˜λ„λ‘ ν•˜λ©° μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό μ–΄λ””μ„œλ“  μ‚¬μš©ν•  수 μžˆλŠ” νŒ¨ν„΄μ΄λ‹€. μΈμŠ€ν„΄μŠ€λ₯Ό μ—¬λŸ¬ 개 λ§Œλ“€λ©΄ μžμ›μ„ λ‚­λΉ„ν•˜κ±°λ‚˜ 버그λ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆμœΌλ―€λ‘œ 였직 ν•˜λ‚˜λ§Œ μƒμ„±ν•œλ‹€.

 

Singleton Pattern

 

κ΅¬ν˜„

ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€λ§Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ μƒμ„±μžμ— private μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ§€μ •ν•˜κ³  μœ μΌν•œ 단일 객체λ₯Ό λ°˜ν™˜ν•  수 μžˆλ„λ‘ 정적 λ©”μ†Œλ“œλ₯Ό 지원해야 ν•œλ‹€.

 

#include <iostream>
using namespace std;

// λ‹€μ΄λ‚˜λ―Ή 싱글톀(Dynamic Singleton)
// 게으λ₯Έ μ΄ˆκΈ°ν™”: 싱글톀을 μ‹€μ œλ‘œ ν•„μš”λ‘œ ν• λ•ŒκΉŒμ§€ μ΄ˆκΈ°ν™”λ₯Ό 미룬닀.
class DynamicSingleton {
private:
	DynamicSingleton() {}
	static DynamicSingleton* Instance;
public:
	static DynamicSingleton* getInstance()
	{
		if (Instance == NULL)
			Instance = new DynamicSingleton();
		return Instance;
	}
};

DynamicSingleton* DynamicSingleton::Instance = nullptr;

// μŠ€νƒœν‹± μ§€μ—­ 싱글톀(Static Local Singleton)
// C++ 11μ—μ„œλŠ” 정적 λ³€μˆ˜ μ΄ˆκΈ°ν™”κ°€ λ©€ν‹°μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œλ„ λ”± ν•œλ²ˆ μ‹€ν–‰λ˜μ–΄μ•Ό ν•œλ‹€.
// Singleton ν΄λž˜μŠ€μ™€λŠ” 달리 μŠ€λ ˆλ“œ μ•ˆμ „(Thread Safe)ν•˜λ‹€.
class StaticSingleton
{
private:
	StaticSingleton() {}
public:
	static StaticSingleton* getInstance()
	{
		static StaticSingleton Instance;
		return &Instance;
	}
};

int main()
{
	DynamicSingleton* s1 = DynamicSingleton::getInstance();	// 이 μ‹œμ μ— 생성
	StaticSingleton* s2 = StaticSingleton::getInstance();
}
μ €μž‘μžν‘œμ‹œ
'πŸ“ Computer Science/✏ Design Pattern' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [κ²Œμž„ ν”„λ‘œκ·Έλž˜λ° νŒ¨ν„΄] κ²Œμž„ 루프 νŒ¨ν„΄(Game Loop Pattern)
  • μ˜΅μ €λ²„ νŒ¨ν„΄(Observer Pattern)
  • MVC νŒ¨ν„΄
  • λ””μžμΈ νŒ¨ν„΄(Design Pattern)
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
싱글톀 νŒ¨ν„΄(Singleton Pattern)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”