ÆÐÅÏÁß °¡Àå ½±°í ´ëºÎºÐ ¸ÕÀú ½ÀµæÇÏ´Â °ÍÀ¸·Î
ÇϳªÀÇ ÀνºÅϽº¸¸À» »ý¼ºÇؼ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù.
¿Ö ÇϳªÀÇ ÀνºÅϽº¸¸À» »ý¼ºÇÒ±î. º¸Åë Àü¿ªÀÛ¾÷°ø°£ ¶Ç´Â ´Ü Çϳª¸¸ Á¸ÀçÇؾßÇÑ´Ù´Â °¡Á¤ÀÌ ÇÊ¿äÇÒ¶§ ¾´´Ù.
¿©·¯»ç¶÷ÀÌ ÀÛ¾÷Çϰųª »ó¼ÓÀ» ¹Þ¾Æ¾²´Â ¶óÀ̺귯¸®ÀÏ°æ¿ì ĸ½¶ÈÀÇ Æ¯¼º»ó °¢ ¸ðµâµéÀÇ ¼Ò½º°¡ ¾î¶»°Ô ¸¸µé¾îÁ³´ÂÁö ¾ËÇÊ¿ä°¡ ¾ø°Ú±Ý ¸¸µå´Â°ÍÀÌ °¡Àå ÀÌ»óÀûÀÌ´Ù. ÀÌ·²°æ¿ì ÀνºÅϽº³ª Ŭ·¡½ºµéÀÌ ¾ðÁ¦ ¾îµð¼ »ý°ÜÀÖ´ÂÁö ÀǵµÇÏÁö ¾Ê´Â »óȲÀÌ ¹ß»ýÇß´ÂÁöÀÇ ¿©ºÎ¸¦ ¾Ë·ÁÁÙ ¾ÈÀüÀåÄ¡°¡ ÇÊ¿äÇÏ´Ù. ½Ì±ÛÅÏ¿¡¼´Â ¸¸¾à ÀÌ·¸°Ô ÀǵµÇÏÁö ¾ÊÀº »óȲÀÌ ¹ß»ýÇßÀ»°æ¿ì ¾Ë·ÁÁÙ¼öÀְԵȴÙ.
package{
class Singleton_class{
private static var once_ins:Singleton_class==null;
private funciton Singleton_class(){
}
public static function instance():Singleton_class {
if(Singleton_class.once_ins==null){
Singleton_class.once_ins=new Singleton_class();
}
return Singleton.once_ins;
}//end instance
}//end class
}//end package
¸ÕÀú static¿¡ ´ëÇÑ ÀÌÇØ°¡ ÇÊ¿äÇÏ´Ù. staticÀ¸·Î ¼±¾ðµÈ ¿¤¸®¸ÕÆ®µé(¼Ó¼º,Æã¼Ç µî)Àº Ç÷¡½ÃÀÇ ¾î´À°÷¿¡¼µç Á¢±ÙÇÒ¼öÀÖ´Ù.
À̸»Àº ÀνºÅϽº°¡ »ý±âÁö ¾Ê¾Æµµ Àü¿ª°ø°£¿¡ »ý¼ºÀÌ µÊÀ» ÀǹÌÇÑ´Ù. ¿ø½ÃºÎ¸ðŬ·¡½º.static À¸·Î ¼±¾ðµÈ ¿ä¼Ò ·Î ±×°Í¿¡ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù.
ÀϹÝÀûÀ¸·Î ÀÌ·±Á¡¶§¹®¿¡ 2.0¿¡¼ _global Àü¿ª ¿ä¼Ò¸¦ ´ëüÇؼ »ç¿ëÇϰԵȴÙ.
ÇÏÁö¸¸ ÀÌ°ÍÀ» »ç¿ëÇÒ¶§´Â ÁÖÀÇÇؾߵÉÁ¡ÀÌ ÀÖ´Ù. ÀÌ¹Ì Á¸ÀçÇÏ´ÂÁö¸¦ ¾Ë¾Æ¾ßµÈ´Ù. ´Ü¼øÈ÷ ÇØ´ç Ŭ·¡½º°¡ À¯¿ëÇÑ À¯Æ¿µéÀÇ Æã¼Ç¸ðÀ½ÀÌ°í Æã¼ÇµéÀÇ ¼·Î°£ °£¼·ÀÌ ¾ø´Ù¸é ÀνºÅϽº¸¦ ÇÊ¿äÇÏÁö ¾ÊÀ»Áöµµ ¸ð¸¥´Ù. ÇÏÁö¸¸ ½Ì±ÛÅÏÆÐÅÏÀ» »ç¿ëÇϴ¸ñÀûÀº ´Ü Çϳª¸¸ Á¸ÀçÇÏ´Â ÀνºÅϽº¸¦ ¸¸µé°í ±×¾ÈÀÇ ¿ä¼ÒµéÀº ±× ÇϳªÀÇ ¿ÂÀüÇÑ ÀνºÅϽº°¡ ÀÛµ¿ÇϱâÀ§ÇØ Á¤»óÀûÀÎ µ¥ÀÌÅ͸¦ ¼·Î ³»ºÎ¿¡¼ ÁÖ°í¹Þ´Â ÀýÂ÷¸¦ °®´Â Áö±ØÈ÷ Á¤»óÀûÀΠŬ·¡½ºÀÌ´Ù. ±×·¯¹Ç·Î ±×¾ÈÀÇ º¯ÈµÈ µ¥ÀÌÅ͵éÀ» ¾ò±âÀ§Çؼ´Â ÀνºÅϽº¸¦ ¾ò¾î¾ß¸¸ÇÑ´Ù. ´Ü Çϳª¸¸ Á¸ÀçÇÏ´Â ÀνºÅϽº.
ÀÌ°ÍÀ» º¸ÀåÇϱâÀ§Çؼ ¹Ýµå½Ã ÇÊ¿äÇÑ°ÍÀÌ »ý¼ºÀÚ¸¦ private·Î ¼±¾ðÇϴ°ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î »ý¼ºÀÚ´Â publicÀ¸·Î »ý¼ºÇϰԵǾî
new Ŭ·¡½º(); ¸¦ ÇϰԵǸé ÄÄÆÄÀÏ·¯´Â Ŭ·¡½º ¾È¿¡ÀÖ´Â »ý¼ºÀÚ¸¦ ÀÚµ¿À¸·Î ½ÇÇàÇϰԵȴÙ. ±×·±µ¥ ÀÌ »ý¼ºÀÚµµ Æã¼ÇÀ̹ǷΠnew¸¦ ½á¼ ÇØ´ç Ŭ·¡½º¸¦ »ç¿ëÇÏ·ÁÇÏ´Â ÁÖü°¡ ¾Æ¹«³ª ÀÏ°æ¿ì´Â publicÀ¸·Î ÇÏ°ÚÁö¸¸ À̹ø°æ¿ì¿¡´Â ÀÚ±â ÀÚ½ÅÀ¸·Î ÁöÁ¤Çß´Ù. ÀÚ±âÀڽŸ¸ÀÌ »ý¼ºÇÒ¼öÀִ°ÍÀÌ´Ù. new Ŭ·¡½º();¸¦ ÇÏ°ÔµÇ¸é ¿¡·¯°¡³´Ù. ÀÌ Å¬·¡½º´Â ¿ÀÁ÷ ÇϳªÀÇ ÀνºÅϽº¸¸ »ý¼ºÇÒ¼öÀÖÀ¸¸ç instance·Î¸¸ »ý¼ºÇÒ¼öÀÖ´Ù°í ¾Ë·ÁÁÖ°í ¿¡·¯¸¦ ³»´Â°ÍÀÌ ÁÁ´Ù. ÀÌ·¸°Ô ÀνºÅϽº¸¦ Çϳª¸¸ Á¸ÀçÇÒ¼öÀÖµµ·Ï À¯ÁöÇÏ´Â ¹æ¹ýÀÌ ½Ì±ÛÅÏÀÌ´Ù.
new ¸¦ Çѹø¸¸ ½ÇÇàÇϱâÀ§Çؼ instance() °¡ Á¸ÀçÇϴµ¥ ±×¾È¿¡¼´Â Á¸ÀçÇÒ°æ¿ì´Â new¸¦ ½ÇÇàÇÏÁö ¾Ê°í ±âÁ¸¿¡ Á¸ÀçÇÏÁö ¾Ê´Â°æ¿ì(¸ÇóÀ½)¿¡´Â ¸¸µç´Ù. instance()´Â ´ç¿¬È÷ À¯ÀÏÇÑ Á¢±Ù Æã¼ÇÀ̹ǷΠpublicÀ¸·Î ÇؾßÇÑ´Ù. ÀÚ±âÀÚ½ÅÀÌ¿Ü¿¡ ¾Æ¹«µµ Á¢±ÙÇÒ¼ö¾ø´Â once_ins¸¦ ¾ò¾î¿Í¼ ÀÌÈÄÀÇ ÀÛ¾÷À» ÁøÇàÇÑ´Ù.
¿Ö ÀÌ·±ÁþÀ» Çϸ鼱îÁö ÀÌ°ÍÀ» ½á¾ßÇϴ°¡ ÇÏ´ÂÁ¡ÀÌ ±Ã±ÝÇÒ°ÍÀÌ´Ù.
¿©·¯ Ŭ·¡½ºµéÀÌ °ø¿ëÀ¸·Î Á¸ÀçÇÏ´Â ¾î¶²°ÍÀ» ¾²±âÀ§Çؼ´Â exteds ºÎ¸ðŬ·¡½º ·Î ºÎ¸ð°¡ °¡Áö°íÀÖ´Â ¿ä¼ÒµéÀ» °í½º¶õÈ÷ °¡Á®¿À°ÔµÈ´Ù.
ÇÏÁö¸¸ ÀÌ·¸°Ô ´Ü¼øÈ÷ ±× ±â´ÉÀ» °øÀ¯ÇϱâÀ§Çؼ »ó¼ÓÀ» ³²¹ßÇϴ°ÍÀº »ó´çÈ÷ ³ÇØÇÑ ¹®Á¦°¡ ¹ß»ýÇÒ¼öµµÀֱ⶧¹®¿¡ ¶§·Î´Â ÀÌ°ÍÀ» »ç¿ëÇؾߵɰæ¿ì°¡ ´õ Æí¸®ÇÒ¼öÀÖ´Ù. ¿¬ÀåÀÌ ´õ ¸¹´Ù¸é ÀûÀýÇÑ ¹æ¹ýÀ¸·Î È¿°úÀûÀÎ °á°ú¸¦ ¾òÀ»¼ö Àִ°ÍÀÌ´Ù.
ÀÌ°ÍÀ» ³²¿ëÇÑ´Ù¸é ²À »ó¼ÓÀ» ÅëÇؼ ÇؾßÇÒ°æ¿ì¸¦ ³õÃļ ´õ °í»ýÇÒ¼öµµÀÖ´Ù.
var ss:Singleton_class=Singleton_class.instance(); ¸¦ »ý¼ºÇϴ°ÍÀ¸·Î ¾ÈÀüÇÏ°Ô ÇϳªÀÇ ½Ì±ÛÅÏÀ» »ý¼ºÇس¾¼öÀÖ´Ù.
new¸¦ ÇØ¾ßµÉ ½ÃÁ¡À» ãÀ» ÇÊ¿ä°¡ ¾ø´Â°ÍÀÌ´Ù. ¾ðÁ¦ ¾îµð¼µç Singleton_class.instance() ¸¸ ¼±¾ðÇÏ¸é °ø¿ëµÈ °ø°£¿¡ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù.