Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
.NETÉè¼ÆÄ£Ê½£¨2£©£ºµ¥¼þģʽ£¨Singleton Pattern£©
 
×÷Õß Àî»á¾ü£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-09-09
  2621  次浏览      32
 

¸ÅÊö

SingletonģʽҪÇóÒ»¸öÀàÓÐÇÒ½öÓÐÒ»¸öʵÀý£¬²¢ÇÒÌṩÁËÒ»¸öÈ«¾ÖµÄ·ÃÎʵ㡣Õâ¾ÍÌá³öÁËÒ»¸öÎÊÌ⣺ÈçºÎÈÆ¹ý³£¹æµÄ¹¹ÔìÆ÷£¬ÌṩһÖÖ»úÖÆÀ´±£Ö¤Ò»¸öÀàÖ»ÓÐÒ»¸öʵÀý£¿¿Í»§³ÌÐòÔÚµ÷ÓÃijһ¸öÀàʱ£¬ËüÊDz»»á¿¼ÂÇÕâ¸öÀàÊÇ·ñÖ»ÄÜÓÐÒ»¸öʵÀýµÈÎÊÌâµÄ£¬ËùÒÔ£¬ÕâÓ¦¸ÃÊÇÀàÉè¼ÆÕßµÄÔðÈΣ¬¶ø²»ÊÇÀàʹÓÃÕßµÄÔðÈΡ£

´ÓÁíÒ»¸ö½Ç¶ÈÀ´Ëµ£¬SingletonģʽÆäʵҲÊÇÒ»ÖÖÖ°ÔðÐÍģʽ¡£ÒòΪÎÒÃÇ´´½¨ÁËÒ»¸ö¶ÔÏó£¬Õâ¸ö¶ÔÏó°çÑÝÁ˶ÀÒ»ÎÞ¶þµÄ½ÇÉ«£¬ÔÚÕâ¸öµ¥¶ÀµÄ¶ÔÏóʵÀýÖУ¬Ëü¼¯ÖÐÁËËüËùÊôÀàµÄËùÓÐȨÁ¦£¬Í¬Ê±ËüÒ²¼ç¸ºÁËÐÐʹÕâÖÖȨÁ¦µÄÖ°Ôð£¡

Òâͼ

±£Ö¤Ò»¸öÀà½öÓÐÒ»¸öʵÀý£¬²¢Ìṩһ¸ö·ÃÎÊËüµÄÈ«¾Ö·ÃÎʵ㡣

Ä£ÐÍͼ

Âß¼­Ä£ÐÍͼ£º

ÎïÀíÄ£ÐÍͼ£º

Éú»îÖеÄÀý×Ó

ÃÀ¹ú×ÜͳµÄְλÊÇSingleton£¬ÃÀ¹úÏÜ·¨¹æ¶¨ÁË×ÜͳµÄÑ¡¾Ù£¬ÈÎÆÚÒÔ¼°¼ÌÈεÄ˳Ðò¡£ÕâÑù£¬ÔÚÈκÎʱ¿ÌÖ»ÄÜÓÉÒ»¸öÏÖÈεÄ×Üͳ¡£ÎÞÂÛÏÖÈÎ×ÜͳµÄÉí·ÝΪºÎ£¬ÆäÍ·ÏÎ"ÃÀÀû¼áºÏÖÚ¹ú×Üͳ"ÊÇ·ÃÎÊÕâ¸öְλµÄÈ˵ÄÒ»¸öÈ«¾ÖµÄ·ÃÎʵ㡣

ÎåÖÖʵÏÖ

1£®¼òµ¥ÊµÏÖ

public sealed class Singleton
2{
3 static Singleton instance=null;
4
5 Singleton()
6 {
7 }
8
9 public static Singleton Instance
10 {
11 get
12 {
13 if (instance==null)
14 {
15 instance = new Singleton();
16 }
17 return instance;
18 }
19 }
20}

ÕâÖÖ·½Ê½µÄʵÏÖ¶ÔÓÚÏß³ÌÀ´Ëµ²¢²»Êǰ²È«µÄ£¬ÒòΪÔÚ¶àÏ̵߳Ļ·¾³ÏÂÓпÉÄܵõ½SingletonÀàµÄ¶à¸öʵÀý¡£Èç¹ûͬʱÓÐÁ½¸öÏß³ÌÈ¥Åжϣ¨instance == null£©£¬²¢Çҵõ½µÄ½á¹ûÎªÕæ£¬ÕâʱÁ½¸öÏ̶߳¼»á´´½¨ÀàSingletonµÄʵÀý£¬ÕâÑù¾ÍÎ¥±³ÁËSingletonģʽµÄÔ­Ôò¡£Êµ¼ÊÉÏÔÚÉÏÊö´úÂëÖУ¬ÓпÉÄÜÔÚ¼ÆËã³ö±í´ïʽµÄֵ֮ǰ£¬¶ÔÏóʵÀýÒѾ­±»´´½¨£¬µ«ÊÇÄÚ´æÄ£ÐͲ¢²»Äܱ£Ö¤¶ÔÏóʵÀýÔÚµÚ¶þ¸öÏ̴߳´½¨Ö®Ç°±»·¢ÏÖ¡£

 

¸ÃʵÏÖ·½Ê½Ö÷ÒªÓÐÁ½¸öÓŵ㣺

1)ÓÉÓÚʵÀýÊÇÔÚ Instance ÊôÐÔ·½·¨ÄÚ²¿´´½¨µÄ£¬Òò´ËÀà¿ÉÒÔʹÓø½¼Ó¹¦ÄÜ£¨ÀýÈ磬¶Ô×ÓÀà½øÐÐʵÀý»¯£©£¬¼´Ê¹Ëü¿ÉÄÜÒýÈë²»ÏëÒªµÄÒÀÀµÐÔ¡£

2)Ö±µ½¶ÔÏóÒªÇó²úÉúÒ»¸öʵÀý²ÅÖ´ÐÐʵÀý»¯£»ÕâÖÖ·½·¨³ÆÎª¡°¶èÐÔʵÀý»¯¡±¡£¶èÐÔʵÀý»¯±ÜÃâÁËÔÚÓ¦ÓóÌÐòÆô¶¯Ê±ÊµÀý»¯²»±ØÒªµÄ singleton¡£

2£®°²È«µÄÏß³Ì

public sealed class Singleton
2{
3 static Singleton instance=null;
4 static readonly object padlock = new object();
5
6 Singleton()
7 {
8 }
9
10 public static Singleton Instance
11 {
12 get
13 {
14 lock (padlock)
15 {
16 if (instance==null)
17 {
18 instance = new Singleton();
19 }
20 return instance;
21 }
22 }
23 }
24}

ÕâÖÖ·½Ê½µÄʵÏÖ¶ÔÓÚÏß³ÌÀ´ËµÊǰ²È«µÄ¡£ÎÒÃÇÊ×ÏÈ´´½¨ÁËÒ»¸ö½ø³Ì¸¨Öú¶ÔÏó£¬Ïß³ÌÔÚ½øÈëʱÏȶԸ¨Öú¶ÔÏó¼ÓËøÈ»ºóÔÙ¼ì²â¶ÔÏóÊÇ·ñ±»´´½¨£¬ÕâÑù¿ÉÒÔÈ·±£Ö»ÓÐÒ»¸öʵÀý±»´´½¨£¬ÒòΪÔÚͬһ¸öʱ¿Ì¼ÓÁËËøµÄÄDz¿·Ö³ÌÐòÖ»ÓÐÒ»¸öÏ߳̿ÉÒÔ½øÈë¡£ÕâÖÖÇé¿öÏ£¬¶ÔÏóʵÀýÓÉ×îÏȽøÈëµÄÄǸöÏ̴߳´½¨£¬ºóÀ´µÄÏß³ÌÔÚ½øÈëʱ£¨instence == null£©Îª¼Ù£¬²»»áÔÙÈ¥´´½¨¶ÔÏóʵÀýÁË¡£µ«ÊÇÕâÖÖʵÏÖ·½Ê½Ôö¼ÓÁ˶îÍâµÄ¿ªÏú£¬ËðʧÁËÐÔÄÜ¡£

3£®Ë«ÖØËø¶¨

public sealed class Singleton
2{
3 static Singleton instance=null;
4 static readonly object padlock = new object();
5
6 Singleton()
7 {
8 }
9
10 public static Singleton Instance
11 {
12 get
13 {
14 if (instance==null)
15 {
16 lock (padlock)
17 {
18 if (instance==null)
19 {
20 instance = new Singleton();
21 }
22 }
23 }
24 return instance;
25 }
26 }
27}

ÕâÖÖʵÏÖ·½Ê½¶Ô¶àÏß³ÌÀ´ËµÊǰ²È«µÄ£¬Í¬Ê±Ï̲߳»ÊÇÿ´Î¶¼¼ÓËø£¬Ö»ÓÐÅж϶ÔÏóʵÀýûÓб»´´½¨Ê±Ëü²Å¼ÓËø£¬ÓÐÁËÎÒÃÇÉÏÃæµÚÒ»²¿·ÖµÄÀïÃæµÄ·ÖÎö£¬ÎÒÃÇÖªµÀ£¬¼ÓËøºó»¹µÃÔÙ½øÐжÔÏóÊÇ·ñÒѱ»´´½¨µÄÅжϡ£Ëü½â¾öÁËÏ̲߳¢·¢ÎÊÌ⣬ͬʱ±ÜÃâÔÚÿ¸ö Instance ÊôÐÔ·½·¨µÄµ÷ÓÃÖж¼³öÏÖ¶ÀÕ¼Ëø¶¨¡£Ëü»¹ÔÊÐíÄú½«ÊµÀý»¯ÑÓ³Ùµ½µÚÒ»´Î·ÃÎʶÔÏóʱ·¢Éú¡£Êµ¼ÊÉÏ£¬Ó¦ÓóÌÐòºÜÉÙÐèÒªÕâÖÖÀàÐ͵ÄʵÏÖ¡£´ó¶àÊýÇé¿öÏÂÎÒÃÇ»áÓþ²Ì¬³õʼ»¯¡£ÕâÖÖ·½Ê½ÈÔÈ»Óкܶàȱµã£ºÎÞ·¨ÊµÏÖÑÓ³Ù³õʼ»¯¡£

4£®¾²Ì¬³õʼ»¯

public sealed class Singleton
2{
3 static readonly Singleton instance=new Singleton();
4
5 static Singleton()
6 {
7 }
8
9 Singleton()
10 {
11 }
12
13 public static Singleton Instance
14 {
15 get
16 {
17 return instance;
18 }
19 }
20}

¿´µ½ÉÏÃæÕâ¶Î¸»ÓÐÏ·¾çÐԵĴúÂ룬ÎÒÃÇ¿ÉÄÜ»á²úÉú»³ÒÉ£¬Õ⻹ÊÇSingletonģʽÂð£¿ÔÚ´ËʵÏÖÖУ¬½«ÔÚµÚÒ»´ÎÒýÓÃÀàµÄÈκγÉԱʱ´´½¨ÊµÀý¡£¹«¹²ÓïÑÔÔËÐп⸺Ôð´¦Àí±äÁ¿³õʼ»¯¡£¸ÃÀà±ê¼ÇΪ sealed ÒÔ×èÖ¹·¢ÉúÅÉÉú£¬¶øÅÉÉú¿ÉÄÜ»áÔö¼ÓʵÀý¡£´ËÍ⣬±äÁ¿±ê¼ÇΪ readonly£¬ÕâÒâζ×ÅÖ»ÄÜÔÚ¾²Ì¬³õʼ»¯ÆÚ¼ä£¨´Ë´¦ÏÔʾµÄʾÀý£©»òÔÚÀ๹Ô캯ÊýÖзÖÅä±äÁ¿¡£

¸ÃʵÏÖÓëÇ°ÃæµÄʾÀýÀàËÆ£¬²»Í¬Ö®´¦ÔÚÓÚËüÒÀÀµ¹«¹²ÓïÑÔÔËÐпâÀ´³õʼ»¯±äÁ¿¡£ËüÈÔÈ»¿ÉÒÔÓÃÀ´½â¾ö Singleton ģʽÊÔͼ½â¾öµÄÁ½¸ö»ù±¾ÎÊÌ⣺ȫ¾Ö·ÃÎʺÍʵÀý»¯¿ØÖÆ¡£¹«¹²¾²Ì¬ÊôÐÔΪ·ÃÎÊʵÀýÌṩÁËÒ»¸öÈ«¾Ö·ÃÎʵ㡣´ËÍ⣬ÓÉÓÚ¹¹Ô캯ÊýÊÇ˽Óеģ¬Òò´Ë²»ÄÜÔÚÀà±¾ÉíÒÔÍâʵÀý»¯ Singleton ÀࣻÒò´Ë£¬±äÁ¿ÒýÓõÄÊÇ¿ÉÒÔÔÚϵͳÖдæÔÚµÄΨһµÄʵÀý¡£

ÓÉÓÚ Singleton ʵÀý±»Ë½Óо²Ì¬³ÉÔ±±äÁ¿ÒýÓã¬Òò´ËÔÚÀàÊ״α»¶Ô Instance ÊôÐԵĵ÷ÓÃËùÒýÓÃ֮ǰ£¬²»»á·¢ÉúʵÀý»¯¡£

ÕâÖÖ·½·¨Î¨Ò»µÄDZÔÚȱµãÊÇ£¬Äú¶ÔʵÀý»¯»úÖÆµÄ¿ØÖÆÈ¨½ÏÉÙ¡£ÔÚ Design Patterns ÐÎʽÖУ¬ÄúÄܹ»ÔÚʵÀý»¯Ö®Ç°Ê¹Ó÷ÇĬÈϵĹ¹Ô캯Êý»òÖ´ÐÐÆäËûÈÎÎñ¡£ÓÉÓÚÔڴ˽â¾ö·½°¸ÖÐÓÉ .NET Framework ¸ºÔðÖ´Ðгõʼ»¯£¬Òò´ËÄúûÓÐÕâЩѡÏî¡£ÔÚ´ó¶àÊýÇé¿öÏ£¬¾²Ì¬³õʼ»¯ÊÇÔÚ .NET ÖÐʵÏÖ Singleton µÄÊ×Ñ¡·½·¨¡£

5£®ÑÓ³Ù³õʼ»¯

public sealed class Singleton
2{
3 Singleton()
4 {
5 }
6
7 public static Singleton Instance
8 {
9 get
10 {
11 return Nested.instance;
12 }
13 }
14
15 class Nested
16 {
17 static Nested()
18 {
19 }
20
21 internal static readonly Singleton instance = new Singleton();
22 }
23}

ÕâÀ³õʼ»¯¹¤×÷ÓÐNestedÀàµÄÒ»¸ö¾²Ì¬³ÉÔ±À´Íê³É£¬ÕâÑù¾ÍʵÏÖÁËÑÓ³Ù³õʼ»¯£¬²¢¾ßÓкܶàµÄÓÅÊÆ£¬ÊÇÖµµÃÍÆ¼öµÄÒ»ÖÖʵÏÖ·½Ê½¡£

ʵÏÖÒªµã

l.SingletonģʽÊÇÏÞÖÆ¶ø²»ÊǸĽøÀàµÄ´´½¨¡£

2.SingletonÀàÖеÄʵÀý¹¹ÔìÆ÷¿ÉÒÔÉèÖÃΪProtectedÒÔÔÊÐí×ÓÀàÅÉÉú¡£

3.Singletonģʽһ°ã²»ÒªÖ§³ÖIcloneable½Ó¿Ú£¬ÒòΪÕâ¿ÉÄܵ¼Ö¶à¸ö¶ÔÏóʵÀý£¬ÓëSingletonģʽµÄ³õÖÔÎ¥±³¡£

4.Singletonģʽһ°ã²»ÒªÖ§³ÖÐòÁл¯£¬ÕâÒ²ÓпÉÄܵ¼Ö¶à¸ö¶ÔÏóʵÀý£¬ÕâÒ²ÓëSingletonģʽµÄ³õÖÔÎ¥±³¡£

5.SingletonÖ»¿¼ÂÇÁ˶ÔÏó´´½¨µÄ¹ÜÀí£¬Ã»Óп¼Âǵ½Ïú»ÙµÄ¹ÜÀí£¬¾ÍÖ§³ÖÀ¬»ø»ØÊյį½Ì¨ºÍ¶ÔÏóµÄ¿ªÏúÀ´½²£¬ÎÒÃÇÒ»°ãû±ØÒª¶ÔÆäÏú»Ù½øÐÐÌØÊâµÄ¹ÜÀí¡£

6.Àí½âºÍÀ©Õ¹SingletonģʽµÄºËÐÄÊÇ¡°ÈçºÎ¿ØÖÆÓû§Ê¹ÓÃnew¶ÔÒ»¸öÀàµÄ¹¹ÔìÆ÷µÄÈÎÒâµ÷Óᱡ£

7.¿ÉÒԺܼòµ¥µÄÐÞ¸ÄÒ»¸öSingleton£¬Ê¹ËüÓÐÉÙÊý¼¸¸öʵÀý£¬ÕâÑù×öÊÇÔÊÐíµÄ¶øÇÒÊÇÓÐÒâÒåµÄ¡£

Óŵã

1.ʵÀý¿ØÖÆ£ºSingleton »á×èÖ¹ÆäËû¶ÔÏóʵÀý»¯Æä×Ô¼ºµÄ Singleton ¶ÔÏóµÄ¸±±¾£¬´Ó¶øÈ·±£ËùÓжÔÏó¶¼·ÃÎÊΨһʵÀý

2.Áé»îÐÔ£ºÒòΪÀà¿ØÖÆÁËʵÀý»¯¹ý³Ì£¬ËùÒÔÀà¿ÉÒÔ¸ü¼ÓÁé»îÐÞ¸ÄʵÀý»¯¹ý³Ì

ȱµã

1.¿ªÏú£ºËäÈ»ÊýÁ¿ºÜÉÙ£¬µ«Èç¹ûÿ´Î¶ÔÏóÇëÇóÒýÓÃʱ¶¼Òª¼ì²éÊÇ·ñ´æÔÚÀàµÄʵÀý£¬½«ÈÔÈ»ÐèҪһЩ¿ªÏú¡£¿ÉÒÔͨ¹ýʹÓþ²Ì¬³õʼ»¯½â¾ö´ËÎÊÌ⣬ÉÏÃæµÄÎåÖÖʵÏÖ·½Ê½ÖÐÒѾ­Ëµ¹ýÁË¡£

2.¿ÉÄܵĿª·¢»ìÏý£ºÊ¹Óà singleton ¶ÔÏó£¨ÓÈÆäÔÚÀà¿âÖж¨ÒåµÄ¶ÔÏó£©Ê±£¬¿ª·¢ÈËÔ±±ØÐë¼Çס×Ô¼º²»ÄÜʹÓà new ¹Ø¼ü×ÖʵÀý»¯¶ÔÏó¡£ÒòΪ¿ÉÄÜÎÞ·¨·ÃÎÊ¿âÔ´´úÂ룬Òò´ËÓ¦ÓóÌÐò¿ª·¢ÈËÔ±¿ÉÄÜ»áÒâÍâ·¢ÏÖ×Ô¼ºÎÞ·¨Ö±½ÓʵÀý»¯´ËÀà¡£

3.¶ÔÏóµÄÉú´æÆÚ£ºSingleton ²»Äܽâ¾öɾ³ýµ¥¸ö¶ÔÏóµÄÎÊÌâ¡£ÔÚÌṩÄÚ´æ¹ÜÀíµÄÓïÑÔÖУ¨ÀýÈç»ùÓÚ .NET Framework µÄÓïÑÔ£©£¬Ö»ÓÐ Singleton ÀàÄܹ»µ¼ÖÂʵÀý±»È¡Ïû·ÖÅ䣬ÒòΪËü°üº¬¶Ô¸ÃʵÀýµÄ˽ÓÐÒýÓá£ÔÚijЩÓïÑÔÖУ¨Èç C++£©£¬ÆäËûÀà¿ÉÒÔɾ³ý
¶ÔÏóʵÀý£¬µ«ÕâÑù»áµ¼Ö Singleton ÀàÖгöÏÖÐü¸¡ÒýÓá£

ÊÊÓÃÐÔ

1.µ±ÀàÖ»ÄÜÓÐÒ»¸öʵÀý¶øÇÒ¿Í»§¿ÉÒÔ´ÓÒ»¸öÖÚËùÖÜÖªµÄ·ÃÎʵã·ÃÎÊËüʱ¡£

2.µ±Õâ¸öΨһʵÀýÓ¦¸ÃÊÇͨ¹ý×ÓÀ໯¿ÉÀ©Õ¹µÄ£¬²¢ÇÒ¿Í»§Ó¦¸ÃÎÞÐè¸ü¸Ä´úÂë¾ÍÄÜʹÓÃÒ»¸öÀ©Õ¹µÄʵÀýʱ¡£

Ó¦Óó¡¾°

1.ÿ̨¼ÆËã»ú¿ÉÒÔÓÐÈô¸É¸ö´òÓ¡»ú£¬µ«Ö»ÄÜÓÐÒ»¸öPrinter Spooler£¬±ÜÃâÁ½¸ö´òÓ¡×÷ҵͬʱÊä³öµ½´òÓ¡»ú¡£ £¨Õª×ÔÂÀÕðÓîµÄC#Éè¼ÆÄ£Ê½£¨7£©£­Singleton Pattern£©

2.PC»úÖпÉÄÜÓм¸¸ö´®¿Ú£¬µ«Ö»ÄÜÓÐÒ»¸öCOM1¿ÚµÄʵÀý¡£

3.ϵͳÖÐÖ»ÄÜÓÐÒ»¸ö´°¿Ú¹ÜÀíÆ÷¡£

4..NET RemotingÖзþÎñÆ÷¼¤»î¶ÔÏóÖеÄSigleton¶ÔÏó£¬È·±£ËùÓеĿͻ§³ÌÐòµÄÇëÇó¶¼Ö»ÓÐÒ»¸öʵÀýÀ´´¦Àí¡£

ÍêÕûʾÀý

ÕâÊÇÒ»¸ö¼òµ¥µÄ¼ÆÊýÆ÷Àý×Ó£¬ËĸöÏß³Ìͬʱ½øÐмÆÊý¡£

using System; 
2using System.Threading;
3
4namespace SigletonPattern.SigletonCounter
5{
6 /// <summary>
7 /// ¹¦ÄÜ£º¼òµ¥¼ÆÊýÆ÷µÄµ¥¼þģʽ
8 /// ±àд£ºTerrylee
9 /// ÈÕÆÚ£º2005Äê12ÔÂ06ÈÕ
10 /// </summary>
11 public class CountSigleton
12 {
13 ///´æ´¢Î¨Ò»µÄʵÀý
14 static CountSigleton uniCounter = new CountSigleton();
15
16 ///´æ´¢¼ÆÊýÖµ
17 private int totNum = 0;
18
19 private CountSigleton()
20
21 {
22 ///Ïß³ÌÑÓ³Ù2000ºÁÃë
23 Thread.Sleep(2000);
24 }
25
26 static public CountSigleton Instance()
27
28 {
29
30 return uniCounter;
31
32 }
33
34 ///¼ÆÊý¼Ó1
35 public void Add()
36 {
37 totNum ++;
38 }
39
40 ///»ñµÃµ±Ç°¼ÆÊýÖµ
41 public int GetCounter()
42 {
43 return totNum;
44 }
45
46 }
47}

using System;
2using System.Threading;
3using System.Text;
4
5namespace SigletonPattern.SigletonCounter
6{
7 /// <summary>
8 /// ¹¦ÄÜ£º´´½¨Ò»¸ö¶àÏ̼߳ÆÊýµÄÀà
9 /// ±àд£ºTerrylee
10 /// ÈÕÆÚ£º2005Äê12ÔÂ06ÈÕ
11 /// </summary>
12 public class CountMutilThread
13 {
14 public CountMutilThread()
15 {
16
17 }
18
19 /// <summary>
20 /// Ï̹߳¤×÷
21 /// </summary>
22 public static void DoSomeWork()
23 {
24 ///¹¹ÔìÏÔʾ×Ö·û´®
25 string results = "";
26
27 ///´´½¨Ò»¸öSigletonʵÀý
28 CountSigleton MyCounter = CountSigleton.Instance();
29
30 ///Ñ­»·µ÷ÓÃËÄ´Î
31 for(int i=1;i<5;i++)
32 {
33 ///¿ªÊ¼¼ÆÊý
34 MyCounter.Add();
35
36 results +="Ïß³Ì";
37 results += Thread.CurrentThread.Name.ToString() + "¡ª¡ª¡µ";
38 results += "µ±Ç°µÄ¼ÆÊý£º";
39 results += MyCounter.GetCounter().ToString();
40 results += "\n";
41
42 Console.WriteLine(results);
43
44 ///Çå¿ÕÏÔʾ×Ö·û´®
45 results = "";
46 }
47 }
48
49 public void StartMain()
50 {
51
52 Thread thread0 = Thread.CurrentThread;
53
54 thread0.Name = "Thread 0";
55
56 Thread thread1 =new Thread(new ThreadStart(DoSomeWork));
57
58 thread1.Name = "Thread 1";
59
60 Thread thread2 =new Thread(new ThreadStart(DoSomeWork));
61
62 thread2.Name = "Thread 2";
63
64 Thread thread3 =new Thread(new ThreadStart(DoSomeWork));
65
66 thread3.Name = "Thread 3";
67
68 thread1.Start();
69
70 thread2.Start();
71
72 thread3.Start();
73
74 ///Ïß³Ì0Ò²Ö»Ö´ÐÐºÍÆäËûÏß³ÌÏàͬµÄ¹¤×÷
75 DoSomeWork();
76 }
77 }
78}

using System; 
2using System.Text;
3using System.Threading;
4
5namespace SigletonPattern.SigletonCounter
6{
7 /// <summary>
8 /// ¹¦ÄÜ£ºÊµÏÖ¶àÏ̼߳ÆÊýÆ÷µÄ¿Í»§¶Ë
9 /// ±àд£ºTerrylee
10 /// ÈÕÆÚ£º2005Äê12ÔÂ06ÈÕ
11 /// </summary>
12 public class CountClient
13 {
14 public static void Main(string[] args)
15 {
16 CountMutilThread cmt = new CountMutilThread();
17
18 cmt.StartMain();
19
20 Console.ReadLine();
21 }
22 }
23}

×ܽá

SingletonÉè¼ÆÄ£Ê½ÊÇÒ»¸ö·Ç³£ÓÐÓõĻúÖÆ£¬¿ÉÓÃÓÚÔÚÃæÏò¶ÔÏóµÄÓ¦ÓóÌÐòÖÐÌṩµ¥¸ö·ÃÎʵ㡣ÎÄÖÐͨ¹ýÎåÖÖʵÏÖ·½Ê½µÄ±È½ÏºÍÒ»¸öÍêÕûµÄʾÀý£¬Íê³ÉÁ˶ÔSingletonģʽµÄÒ»¸ö×ܽáºÍ̽Ë÷¡£ÓÃÒ»¾ä¹ã¸æ´ÊÀ´¸ÅÀ¨Singletonģʽ¾ÍÊÇ¡°¼òÔ¼¶ø²»¼òµ¥¡±¡£

   
2621 ´Îä¯ÀÀ       32
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
 
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
Visitor Parttern
ÓÉ±í¼°À￴ģʽ
Éè¼ÆÄ£Ê½Ëæ±ÊϵÁÐ
ÉîÈëdz³öÉè¼ÆÄ£Ê½-½éÉÜ
.NETÖеÄÉè¼ÆÄ£Ê½

Ïà¹ØÅàѵ¿Î³Ì

J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Ó¦ÓÃģʽÉè¼ÆJavaÆóÒµ¼¶Ó¦ÓÃ
Éè¼ÆÄ£Ê½Ô­ÀíÓëÓ¦ÓÃ
J2EEÉè¼ÆÄ£Ê½Ö¸ÄÏ
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Éè¼ÆÄ£Ê½¼°ÆäCSharpʵÏÖ


ijµçÁ¦¹«Ë¾ Éè¼ÆÄ£Ê½Ô­Àí
À¶ÍØÆË Éè¼ÆÄ£Ê½Ô­Àí¼°Ó¦ÓÃ
ÎÀÐǵ¼º½ UML & OOAD
ÌÀɭ·͸Ñз¢ÖÐÐÄ UML& OOAD
Öдïµçͨ Éè¼ÆÄ£Ê½Ô­Àí
Î÷ÃÅ×Ó Ç¶ÈëʽÉè¼ÆÄ£Ê½
 
 
 
¡¡