¼òµ¥À´Ëµ¾ÍÊǵ±µÚÒ»¸öÏ̵߳÷ÓÃÅжÏif(dh==null)Ϊtrue£¬ÒѾ½øÈëÄÚ²¿Í¨¹ýµ÷ÓÃnew½øÐÐʵÀý»¯Ê±£¬ÁíÒ»¸öÏß³ÌÒ²½øÐÐÁËÅжϣ¬¶øÇ¡Ç¡´Ëʱdh»¹Ã»Óб»ÊµÀý»¯Íê³É£¬Í¬ÑùµÚ¶þ¸öÏß³ÌÒ²½øÈëifÅжÏÓï¾äµÄÄÚ²¿£¬½øÐÐdhµÄʵÀý»¯£¬ÓÚÊǾͳöÏÖÁË2¸öDHÀàµÄʵÀý£¬´ÓÁ½¸ö¼À̳×ß³öÀ´Á½¸ö´ó¶ñħ¡£
½â¾öÕâÒ»ÎÊÌâÒ»°ãÓÐÁ½ÖÖ·½·¨¶öººÊ½µ¥ÀýºÍË«Öؼì²éËø¡£
1.1 ¶öººÊ½µ¥Àý¶öººÊ½µ¥ÀýÊÇÔÚϵͳ³õʼ»¯Ê±×Ô¶¯Íê³Éµ¥ÀýÀàʵÀýµÄÒ»ÖÖ·½·¨£¬¶ø²»Êǵȵ½ÐèÒªµÄʱºòÔÙ³õʼ»¯£¬Ò²¾ÍÊÇ˵²»¹ÜÒÔºóÄã»á²»»áÓõ½Õâ¸öÀàµÄ¶ÔÏó£¬ÎÒ¶¼»á¸øÄãʵÀý»¯Ò»¸ö³öÀ´£¬ÓÐÒ»ÖÖ¼¢¶öÄÑÄ͵ĸоõÔÚÀïÃ棬¹ÊÃû¶öººÊ½¡£
¶öººÊ½µ¥Àý DH : IHero { DH dh = new DH(); ˽ÓеĹ¹Ô캯Êý£¬Äܹ»±£Ö¤¸ÃÀ಻»áÔÚÍⲿ±»ËæÒâʵÀý»¯£¬ÊDZ£Ö¤¸ÃÀàÖ»ÓÃÒ»¸öʵÀýµÄ»ù±¾Ç°Ìá DH() { } µ÷ÓÃʱֱ½Ó·µ»ØÒѾʵÀý»¯Íê³ÉµÄ¶ÔÏó DH GetInstance() { return dh; } Ðã³ö×Ô¼ºµÄ¼¼ÄÜ ShowSkills() { Console.WriteLine(); } }
ÕâÖÖ·½·¨¼òµ¥Ö±½ÓµÄ½â¾öÁËḬ̈߳²È«ÎÊÌ⣬µ«ÊÇÓÉÓÚʵÔÚ³õʼ»¯Ê±¾Í½«µ¥ÀýÀà½øÐÐÁËʵÀý»¯£¬Ò»¶¨³Ì¶ÈÉÏÔì³ÉÁ˸÷ÖÖ×ÊÔ´µÄÀË·Ñ£¬Î¥±³ÁËÑÓ³Ù¼ÓÔصÄÉè¼Æ˼Ï룬һ°ãΪÁ˽â¾öµ¥ÀýģʽḬ̈߳²È«ÎÊÌ⣬ͨ³£Ê¹ÓÃË«Öؼì²éËøµÄ·½·¨¡£
1.2 Ë«Öؼì²éËøË«Öؼì²éËøµÄÃüÃû»ùÓÚµ¥Öؼì²éËø·½Ê½¶øÀ´£¬µ¥Öؼì²éËøÊÇÔÚGetInstanceʵÏÖµÄʱºòÏÈÐнøÐÐËø¶¨£¬·ÀÖ¹±ðµÄÏ߳̽øÈ룬´Ó¶ø½â¾öḬ̈߳²È«ÎÊÌâµÄ¡£Ö÷Òª´úÂëÈçÏÂ
lockObject = new object ();
lock (lockObject) { //ÏÈÅжÏdhÊÇ·ñÒѾ±»ÊµÀý»¯£¬Èôδ±»ÊµÀý»¯£¬ÏÈʵÀý»¯µÃµ½DHÀàµÄʵÀý (dh == null) { dh = new DH(); } } return dh;
ÕâÖÖ·½Ê½Ã¿´Î¶¼Òª½øÐÐlock²Ù×÷£¬Êµ¼ÊÉÏÊÇÒ»ÖÖͬ²½·½Ê½£¬Õ⽫»áÔÚÒ»¶¨³Ì¶ÈÉÏÓ°ÏìϵͳÐÔÄܵÄÆ¿¾±ºÍÔö¼ÓÁ˶îÍâµÄ¿ªÏú¡£ÓÉ´ËÑÜÉú³öÁËË«Öؼì²éËøµÄ·½Ê½£¬¼òµ¥À´Ëµ¾ÍÊÇÏÈÅжÏÒ»´ÎdhÊÇ·ñΪnull£¬Îªnullʱ²Å½øÐÐlock²Ù×÷£¬²»Îªnull¾ÍÖ±½Ó·µ»Ø¡£
¶ñħÁÔÊÖ DH : IHero { DH dh; lockObject = new object (); ˽ÓеĹ¹Ô캯Êý£¬Äܹ»±£Ö¤¸ÃÀ಻»áÔÚÍⲿ±»ËæÒâʵÀý»¯£¬ÊDZ£Ö¤¸ÃÀàÖ»ÓÃÒ»¸öʵÀýµÄ»ù±¾Ç°Ìá DH() { } ¶¨ÒåÒ»¸ö¾²Ì¬µÄ¹«¿ªµÄGetInstance·½·¨¹©ÍⲿµÃµ½DHÀàΨһʵÀýÊǵ÷Óà DH GetInstance() { (dh == null) { lock (lockObject) { //ÏÈÅжÏdhÊÇ·ñÒѾ±»ÊµÀý»¯£¬Èôδ±»ÊµÀý»¯£¬ÏÈʵÀý»¯µÃµ½DHÀàµÄʵÀý (dh == null) { dh = new DH(); } } } return dh; } Ðã³ö×Ô¼ºµÄ¼¼ÄÜ ShowSkills() { Console.WriteLine(); } }
2 ×ܽ᱾´ÎÖ÷Òª»ùÓÚÉÏһƪµÄ¼òµ¥¹¤³§Ä£Ê½£¬ÑÓÐøµÄѧϰʹÓÃÁ˵¥Àý¹¤³§Ä£Ê½È·±£Ò»¸öÀàʵÀýµÄÈ«¾ÖΨһÐÔ£¬¹ý³ÌÖÐѧϰÁËÀÁººÊ½¡¢¶öººÊ½¡¢Ë«Öؼì²éËøµÈ¾ßÌå½â¾ö·½°¸¼°Ñݱä¹ý³Ì¡£
Éè¼Æģʽ´ÓÀ´²»Êǵ¥´ò¶À¶·£¬ºËÐÄ˼ÏëÊÇÒª¸ù¾Ýʵ¼ÊÐèÒªÀûÓöàÖÖģʽ»¥ÏàÅäºÏÀ´ÊµÏÖ´úÂë½á¹¹µÄ×îÓÅ»¯ºÍ½¡×³ÐÔ¡£
¡¡