์ถ”์ƒ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(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();

 

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์ถ”์ƒ ์‹ฑ๊ธ€ํ†ค์„ ๊ตฌํ˜„ํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๋””์ž์ธํŒจํ„ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋””์ž์ธํŒจํ„ด] ์ปดํฌ์ง€ํŠธ(Composite) ํŒจํ„ด  (1) 2024.08.25
[๋””์ž์ธํŒจํ„ด] ์ „๋žต(Strategy) ํŒจํ„ด  (0) 2024.08.24
[๋””์ž์ธํŒจํ„ด] ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด  (0) 2024.08.23
์‹ฑ๊ธ€ํ†ค ํŒจํ„ด  (1) 2023.01.03
'๋””์ž์ธํŒจํ„ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋””์ž์ธํŒจํ„ด] ์ปดํฌ์ง€ํŠธ(Composite) ํŒจํ„ด
  • [๋””์ž์ธํŒจํ„ด] ์ „๋žต(Strategy) ํŒจํ„ด
  • [๋””์ž์ธํŒจํ„ด] ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด
  • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด
์„œ์•„๋ž‘๐Ÿ˜ƒ
์„œ์•„๋ž‘๐Ÿ˜ƒ
Just Do It๐Ÿ’ช
  • ์„œ์•„๋ž‘๐Ÿ˜ƒ
    G-Stack
    ์„œ์•„๋ž‘๐Ÿ˜ƒ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (144)
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (78)
        • C++ ๊ธฐ์ดˆ (28)
        • C++ ์‘์šฉ (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ & ์šด์˜์ฒด์ œ (31)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (12)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • ๋””์ž์ธํŒจํ„ด (5)
      • ์„œ๋น„์Šค & ํˆด (7)
      • ํŠธ๋ Œ๋“œ&์ด์Šˆ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • G์Šคํƒ์˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์Šคํƒ
    STD
    ํ•จ์ˆ˜
    ๋ฐฐ์—ด
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    c
    go
    ์ปดํ“จํ„ฐ
    ๋ฉ”๋ชจ๋ฆฌ
    fork
    component
    ํŒจํ‚ค์ง€
    ํฌ์ธํ„ฐ
    ๋ณ€์ˆ˜
    ๋ฐ˜๋ณต๋ฌธ
    ์žฌ๊ท€
    Thread
    ์กฐ๊ฑด๋ฌธ
    ์ƒ์†
    ํ•˜๋“œ๋””์Šคํฌ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    cpu
    pointer
    ํŒŒ์ด์ฌ
    ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ
    ํŒŒ์ผ์ž…์ถœ๋ ฅ
    init
    ๋””์ž์ธํŒจํ„ด
    RAM
    c++
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
์„œ์•„๋ž‘๐Ÿ˜ƒ
์ถ”์ƒ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Abstract Singleton)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”