๋์์ธํจํด
์ถ์ ์ฑ๊ธํค ํจํด(Abstract Singleton)
์์๋๐
2023. 3. 20. 00:34
์ถ์ ์ฑ๊ธํค ํจํด์ ์ถ์ํ ๋์ด ์๋ ์ฑ๊ธํค ํจํด์ ์์๋ฐ์์, ์ฌ์ฉํ๋ ํจํด์ ๋๋ค. ๋ง์ฝ ์ฑ๊ธํค์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ ํด๋์ค๊ฐ 5๊ฐ๋ผ๋ฉด, 5๊ฐ ๋ชจ๋ ์ฑ๊ธํค ํจํด์ ์ ์ฉํ๊ธฐ ๋ณด๋จ ์์๊ณผ ํ ํ๋ฆฟ์ ์ด์ฉํด์ ์ถ์ํ๋ ์ฑ๊ธํค์ ๊ตฌํํฉ๋๋ค.
๋งค์ฐ ๊ฐ๋จํ๋๊น ๋ฐ๋ผํด๋ณด์ธ์ :)
1. ์์ ๋ฐ์ ์ถ์ํ ํด๋์ค๋ฅผ ํ
ํ๋ฆฟ์ผ๋ก ๊ตฌํ.
<template typename T>
class SingletonTemplate
{
public:
T* GetInstance()
{
if ( m_instance == nullptr )
{
m_instance = new T();
}
return m_instance;
}
private:
SingletonTemplate();
static T* m_instance;
}
Lasy create๋ก ๊ตฌํํด๋ดค์ต๋๋ค. GetInstance๊ฐ ์ฒ์ ํธ์ถ๋์ ๋ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
2. ์ฌ์ฉํ ํด๋์ค์์ ์ถ์ ์ฑ๊ธํค ํด๋์ค๋ฅผ ์์
class DataHandler : public SingletonTemplate<DataHandler>
{
...
}
3. ์ธ์คํด์ค ์ฌ์ฉ
const auto* handler = DataHnadler::getInstance();
๊ฐ๋จํ๊ฒ ์ถ์ ์ฑ๊ธํค์ ๊ตฌํํ ์์ ์ ๋๋ค.