{"id":323,"date":"2007-04-28T15:19:25","date_gmt":"2007-04-28T15:19:25","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=323"},"modified":"2017-01-29T13:21:11","modified_gmt":"2017-01-29T04:21:11","slug":"singleton-pattern-in-c","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=323","title":{"rendered":"Singleton Pattern in C#"},"content":{"rendered":"<p>\ub300\ub2e4\uc218\uc758 \ud328\ud134\uc774 \uadf8\ub7f0 \uac83\ucc98\ub7fc Singleton Pattern(\uc774\ud558 Singleton) \uc5ed\uc2dc \uc5b8\uc5b4\uc5d0 \ub3c5\ub9bd\uc801\uc778 \ubd80\ubd84\uc774 \ub9ce\uae30\ub294 \ud558\uc9c0\ub9cc \uac11\uc791\uc2a4\ub808 \ub2e4\uc18c \uc775\uc219\uce58 \uc54a\uc740 C#\uc73c\ub85c Singleton\uc744 \uad6c\ud604\ud560 \ud544\uc694\uac00 \uc0dd\uaca8 \ud558\ub098\uc758 \ud15c\ud50c\ub9bf\uc758 \ubaa9\uc801\uc73c\ub85c \uc791\uc131\ud574 \ub193\ub294\ub2e4.<\/p>\n<pre><code class=\"cpp\">public class Singleton\r\n{\r\n   private static Singleton instance;\r\n\r\n   private Singleton() {}\r\n\r\n   public static Singleton Instance\r\n   {\r\n      get \r\n      {\r\n         if (instance == null)\r\n         {\r\n            instance = new Singleton();\r\n         }\r\n         return instance;\r\n      }\r\n   }\r\n}<\/code><\/pre>\n<p>Singleton\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8 \uce21\uc5d0\uc11c \uc624\uc9c1 \ud558\ub098\uc758 Instance\ub9cc\uc744 \uc0dd\uc131\ud558\ub3c4\ub85d \uc81c\ud55c\ud574\uc57c \ud558\ubbc0\ub85c \uc784\uc73c\ub85c \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc0dd\uc131\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \uc0dd\uc131\uc790\ub97c private\ub85c \uc120\uc5b8\ud558\uace0 \uc788\uc74c\uc744 \uc54c \uc218 \uc788\ub2e4. \ub300\uc2e0 Instance\ub97c C#\uc758 \ud3b8\ub9ac\ud55c Property \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud574\uc11c \ub9cc\ub4e4\uace0 \uc774\ub97c \ud1b5\ud574 \uc624\uc9c1 \ud558\ub098\uc758 Instance\ub9cc\uc744 \ub9cc\ub4e0\ub2e4. Instance Propery\uc758 get\uc758 \uad6c\ud604\uc744 \ubcf4\uba74 <strong><span style=\"color: #0000ff;\">static\uc73c\ub85c \uc120\uc5b8\ub41c \uc790\uc2e0\uc758 \ud074\ub798\uc2a4 \ud0c0\uc785\uc778 instance<\/span><\/strong> \ubcc0\uc218\uac00 null\uc778 \uacbd\uc6b0, \uc989 \uc0dd\uc131\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \ub2e8 \ud55c\ubc88 \uc0dd\uc131\ud574 \uc8fc\uace0 \ubc18\ud658\ud558\uace0 \uc788\uc74c\uc744 \uc54c \uc218 \uc788\ub2e4. \ud55c\ubc88 \uc0dd\uc131\ub41c \uacbd\uc6b0\ub77c\uba74 \uc0dd\uc131\uacfc\uc815 \uc5c6\uc774 \uadf8\uc800 \ubc18\ud658\ub9cc \uc774\ub8e8\uc5b4\uc9c4\ub2e4. \ub2e4\ub978 Pattern\uc5d0 \ube44\ud574 \uadf8 \ubaa9\uc801\uacfc \uad6c\ud604\ud558\ub294 \uac83\uc5d0 \uc5b4\ub824\uc6c0\uc774 \uc5c6\uc744 \uac83\uc774\ub2e4. \ud558\uc9c0\ub9cc \ud55c\ubc1c\uc791 \ub354 \uc811\uadfc\ud574\uc11c Multi Thread \ud658\uacbd\uc5d0\uc11c Singleton\uc744 \ubc14\ub77c\ubcf4\uba74 \uc624\ub958\uc758 \uadfc\uc6d0\uc774\ub098 \ub2e4\ub984\uc5c6\ub2e4. \uc989 \uc5ec\ub7ec\uac1c\uc758 Thread\uc5d0\uc11c Singleton \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud560 \uacbd\uc6b0 \ucda9\ub3cc\uc774 \uc0dd\uae34\ub2e4. \uc774\uc720\ub294 \ub2e8 \ud558\ub098\uc758 \uc778\uc2a4\ud134\uc2a4 \ubcc0\uc218\ub97c \uc5ec\ub7ec\uac1c\uc758 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub824 \ud558\uae30 \ub54c\ubb38\uc774\ub2e4. \uace0\uc18d\ud654\ub41c CPU\ub098 Singleton \ud074\ub798\uc2a4\uac00 \ubb34\ucc99 \uc791\uc740 \ucf54\ub4dc\uc870\uac01\uc774\ub77c\uba74 \u00a0\ucda9\ub3cc\uc5d0\uc758\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd \ud655\ub960\uc774 \ub2e4\uc18c \uc904\uaca0\uc9c0\ub9cc, \uc5ec\uc804\uc774 \ucda9\ub3cc \ud655\uc728\uc740 \ub192\ub2e4. \uc774\uc5d0 \ub300\ud55c \uac1c\uc120\ub41c \ucf54\ub4dc\uac00 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre><code class=\"cpp\">public class Singleton\r\n{\r\n   private static Singleton instance;\r\n   private static object syncRoot = new Object();\r\n\r\n   private Singleton() {}\r\n\r\n   public static Singleton Instance\r\n   {\r\n      get \r\n      {\r\n         lock (syncRoot) {\r\n             if (instance == null) \r\n             { \r\n                 instance = new Singleton();\r\n\r\n             }\r\n\r\n             return instance;\r\n          }\r\n      }\r\n   }\r\n}\r\n<\/code><\/pre>\n<p>lock\uc774\ub77c\ub294 C#\uc758 \uc608\uc57d\uc5b4\ub97c \uc0ac\uc6a9\ud568\uc73c\ub85c\uc368 Critical Section\uc744 \ub9cc\ub4e4\uc5b4 \uc8fc\uace0 \uc788\ub2e4. \uc774 \uc139\uc158 \uad6c\uac04\uc758 \ucf54\ub4dc\ub4e4\uc740 \uc6d0\uc790\uc131\uc744 \uac16\uac8c \ub418\uc5b4 \uc624\uc9c1 \ub2e8 \ud558\ub098\uc758 \uc2a4\ub808\ub4dc\ub9cc\uc774 \uc774 \uad6c\uac04\uc758 \ucf54\ub4dc\ub97c \uc5f0\uc18d\uc801\uc73c\ub85c \uc2e4\ud589\ud558\ub294 \uac83\uc744 \ubcf4\uc7a5\ud558\uac8c \ub41c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ub300\ub2e4\uc218\uc758 \ud328\ud134\uc774 \uadf8\ub7f0 \uac83\ucc98\ub7fc Singleton Pattern(\uc774\ud558 Singleton) \uc5ed\uc2dc \uc5b8\uc5b4\uc5d0 \ub3c5\ub9bd\uc801\uc778 \ubd80\ubd84\uc774 \ub9ce\uae30\ub294 \ud558\uc9c0\ub9cc \uac11\uc791\uc2a4\ub808 \ub2e4\uc18c \uc775\uc219\uce58 \uc54a\uc740 C#\uc73c\ub85c Singleton\uc744 \uad6c\ud604\ud560 \ud544\uc694\uac00 \uc0dd\uaca8 \ud558\ub098\uc758 \ud15c\ud50c\ub9bf\uc758 \ubaa9\uc801\uc73c\ub85c \uc791\uc131\ud574 \ub193\ub294\ub2e4. public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); } &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=323\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Singleton Pattern in C#&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-323","post","type-post","status-publish","format-standard","hentry","category-design"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=323"}],"version-history":[{"count":2,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/323\/revisions"}],"predecessor-version":[{"id":3640,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/323\/revisions\/3640"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=323"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=323"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}