¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¸µ : Singleton ÆÐÅÏ
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

singleton

singletoneÀº Çѹø¿¡ Çϳª¾¿ÀÇ ÆÐ¸¸ º¸¿©Áشٴ Àǹ̸¦ °¡Áö°í ÀÖ´Ù. Á»´õ ÀϹÝÀûÀ¸·Î´Â Çѹø¿¡ ÇϳªÀÇ »ç°Ç¸¸ ÀϾµµ·Ï ÇÑ´Ù¶ó´Â ÀÇ¹Ì·Î ÇØ¼®ÇÒ ¼ö ÀÖÀ» °Í °°´Ù.

¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¸µ ¿µ¿ª¿¡¼­ÀÇ singletoneÀº °´Ã¼ÁöÇâÇÁ·Î±×·¡¹Ö½Ã Ŭ·¡½º°¡ ´ÜÇϳªÀÇ »ç°Ç, Áï ´Ü ÇϳªÀÇ ÀνºÅϽº¸¸À» °¡Áöµµ·Ï ÇÏ´Â ÆÐÅÏÀÌ´Ù. ÀÌ ÆÐÅÏÀº ÁÖ·Î Áß¿äÇÑÀÚ¿øÀ» °ü¸®ÇϰíÀÚ ÇÒ¶§, ´Ù¼öÀÇ ÀνºÅϽº°¡ »ý¼ºµÇÁö ¾Êµµ·Ï Á¦ÇÑÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. ¿¹ÄÁµ¥, Çѹø¿¡ ÇϳªÀÇ ÀνºÅϽº¸¸ÀÌ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áµÇ´Â°Ô º¸Àå¹Þ±â¸¦ ¿øÇÏ´Â °æ¿ìµîÀÌ´Ù.

singletoneÀº ´Ù¸¥ ÆÐÅϵé°úµµ ¾î¿ï·Á¼­ »ç¿ëÇÒ ¼ö Àִµ¥, ´ÙÀ½°ú °°Àº °æ¿ìµéÀÌ´Ù.
  1. facade °´Ã¼´Â ´ÜÁö ÇϳªÀÇ °´Ã¼¸¸ÀÌ ¿ä±¸µÇ´Âµ¥, À̸¦ º¸ÀåÇϱâ À§Çؼ­ singletoneÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦µé¾î ÄÄÇ»Å͸¦ °¡µ¿½ÃŰ´Â facade Ŭ·¡½º°¡ ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ. ÄÄÇ»Å͸¦ °¡µ¿½Ã۱â À§ÇÑ ¿©·¯°¡Áö °øÁ¤µé Áï cpu freeze, memory load, cpu jump, cpu executeÀº ´ÜÁö ÇϳªÀÇ °´Ã¼°¡ »ý¼ºµÇ¾î¼­ ¼öÇàµÇ´Â °ÍÀ» º¸ÀåÇØ¾ß ÇÒ °ÍÀÌ´Ù.
  2. ¶§¶§·Î singleton ÆÐÅÏÀº Àü¿ªº¯¼öÁ¢±ÙÀ» Á¦¾îÇϱâ À§Çؼ­ »ç¿ëµÇ±âµµ ÇÑ´Ù. Àü¿ªº¯¼ö¸¦ ¸ð¾Æ¼­ ÇϳªÀÇ single Ŭ·¡½º¿¡ ´ã¾ÆµÎ´Â ¹æ½ÄÀ¸·Î »ç¿ëÇÑ´Ù. Àü¿ªº¯¼ö Á¢±Ù ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ ¿ëµµ·Î »ç¿ëÇÒ °æ¿ì¿¡ singleton ÆÐÅÏÀÚü°¡ Àü¿ªÅ¬·¡½º°¡ µÈ´Ù´Â ¹®Á¦Á¡ÀÌ ÀÖÁö¸¸, namespace Ãæµ¿¹°Á¦¸¦ ÇØ°áÇϰí Àü¿ªº¯¼ö¸¦ ÇÑ ÁöÁ¡¿¡¼­ °ü¸®ÇÒ ¼ö ÀÖ´Ù´Â °Í¸¸À¸·Îµµ singleton ÆÐÅÏÀº ÃæºÐÈ÷ ¿ªÇÒÀ» ÇØ³¾ °ÍÀÌ´Ù.

single class


singletonÀÇ ÀνºÅϽº´Â getInstance()¸Þ¼­µå¸¦ ÅëÇØ¼­¸¸ »ý¼ºÇÒ ¼ö ÀÖµµ·Ï ÇϹǷνá, ÇϳªÀÇ ÀνºÅϽº¸¸À» »ý¼ºÇϵµ·Ï Á¦¾îÇÒ ¼ö ÀÖ´Ù.

¿¹Á¦

#include <iostream> 
using namespace std; 
 
class Mutex 
{ 
}; 
 
# Mutex Á¦¾î Ŭ·¡½º 
class Lock 
{ 
    private: 
        Mutex &mutex; 
    public: 
        Lock(Mutex& m) : mutex(m) {} 
        ~Lock() {} 
}; 
 
class Singleton 
{ 
    public : 
        static Singleton *GetInstance(); 
        int a; 
    private:     
        Singleton(int _a)  
        { 
            a = _a; 
            cout << "In Ctor" << endl; 
        } 
        ~Singleton() {cout << "In Dtor" << endl;}     
         
        static Mutex mutex; 
 
        Singleton(const Singleton&); 
}; 
 
Mutex Singleton::mutex; 
 
Singleton *Singleton::GetInstance() 
{ 
    Lock lock(mutex); 
    cout << "Get Inst" << endl; 
    static Singleton myinst(1); 
    return &myinst; 
}; 
 
int main() 
{ 
    Singleton *singleton = Singleton::GetInstance(); 
    cout << "The value of the singleton : " << singleton->a << endl; 
    return 0; 
} 
 

ÇÒÀÏ

  1. ´Ù¸¥ ÆÐÅϰúÀÇ È°¿ë ¹æ¹ý ´õ ã¾Æº¸±â
  2. c++, perl, phpÀÇ singleton ±¸Çö¿¹Á¦ ÄÚµå ¸¸µé¾îº¸±â

category_C++
category__2
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.