ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ101²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
¡¡¡¡
1¡£¡¡ÉèÖÃ×¢²á±í¡¡¡¡
ÔÚÕâ¶ù£¬´ó¼Ò¿É¿´µ½¶Ô¾²Ì¬·½·¨Naming¡£bind£¨£©¡¡µÄÒ»¸öµ÷Óá£È»¶ø£¬Õâ¸öµ÷ÓÃÒªÇó×¢²á±í×÷Ϊ¼ÆËã»úÉϵÄÒ»¡¡
¸ö¶ÀÁ¢½ø³ÌÔËÐС£×¢²á±í·þÎñÆ÷µÄÃû×ÖÊÇ¡¡rmiregistry¡£ÔÚ32¡¡Î»Windows¡¡»·¾³ÖУ¬¿ÉʹÓ㺡¡¡¡
start¡¡rmiregistry¡¡¡¡
ÁîÆäÔÚºǫ́ÔËÐС£ÔÚUnix¡¡ÖУ¬Ê¹Ó㺡¡¡¡
rmiregistry¡¡&¡¡¡¡
ºÍÐí¶àÍøÂç³ÌÐòÒ»Ñù£¬rmiregistry¡¡Î»ÓÚ»úÆ÷Æô¶¯ËüËùÔÚµÄij¸ö¡¡IP¡¡µØÖ·´¦£¬µ«ËüÒ²±ØÐë¼àÊÓÒ»¸ö¶Ë¿Ú¡£Èç¹û¡¡
ÏóÉÏÃæÄÇÑùµ÷ÓÃrmiregistry£¬²»Ê¹ÓòÎÊý£¬×¢²á±íµÄ¶Ë¿Ú¾Í»áĬÈÏΪ¡¡1099¡£ÈôÏ£ÍûËüλÓÚÆäËûij¸ö¶Ë¿Ú£¬¡¡
Ö»ÐèÔÚÃüÁîÐÐÌí¼ÓÒ»¸ö²ÎÊý£¬Ö¸¶¨ÄǸö¶Ë¿Ú±àºÅ¼´¿É¡£¶ÔÕâ¸öÀý×ÓÀ´Ëµ£¬¶Ë¿Ú½«Î»ÓÚ¡¡2005£¬ËùÒÔ¡¡
rmiregistry¡¡Ó¦¸ÃÏóÏÂÃæÕâÑùÆô¶¯£¨¶ÔÓÚ32¡¡Î»Windows£©£º¡¡¡¡
start¡¡rmiregistry¡¡2005¡¡¡¡
¶ÔÓÚUnix¡¡£¬ÔòʹÓÃÏÂÊöÃüÁ¡¡¡¡
rmiregistry¡¡2005¡¡&¡¡¡¡
Óë¶Ë¿ÚÓйصÄÐÅÏ¢±ØÐë´«Ë͸øbind£¨£©ÃüÁͬʱ´«Ë͵Ļ¹ÓÐ×¢²á±íËùÔÚµÄÄÇ̨»úÆ÷µÄ¡¡IP¡¡µØÖ·¡£µ«¼ÙÈôÎÒÃÇ¡¡
ÏëÔÚ±¾µØ²âÊÔRMI¡¡³ÌÐò£¬¾ÍÏó±¾ÕµÄÍøÂç³ÌÐòÒ»Ö±²âÊÔµÄÄÇÑù£¬ÕâÑù×ö¾Í»á´øÀ´ÎÊÌâ¡£ÔÚ¡¡JDK¡¡1¡£1¡£1¡¡°æ±¾¡¡
ÖУ¬´æÔÚ×ÅÏÂÊöÁ½·½ÃæµÄÎÊÌ⣨עÊ͢ߣ©£º¡¡¡¡
£¨1£©¡¡localhost²»ÄÜËæ¡¡RMI¡¡¹¤×÷¡£ËùÒÔΪÁËÔÚµ¥¶Àһ̨»úÆ÷ÉÏÍê³É¶Ô¡¡RMI¡¡µÄ²âÊÔ£¬±ØÐëÌṩ»úÆ÷µÄÃû×Ö¡£Îª¡¡
ÁËÔÚ32¡¡Î»¡¡Windows¡¡»·¾³Öе÷²é×Ô¼º»úÆ÷µÄÃû×Ö£¬¿É½øÈë¿ØÖÆÃæ°å£¬Ñ¡Ôñ¡°ÍøÂ硱£¬Ñ¡Ôñ¡°±êʶ¡±¿¨Æ¬£¬ÆäÖС¡
ÁгöÁ˼ÆËã»úµÄÃû×Ö¡£¾ÍÎÒ×Ô¼ºµÄÇé¿öÀ´Ëµ£¬ÎҵĻúÆ÷½Ð×÷¡°Colossus¡¡¡±£¨ÒòΪÎÒÓü¸¸ö´óÈÝÁ¿µÄÓ²Å̱£´æ¡¡
¸÷ÖÖ²»Í¬µÄ¿ª·¢ÏµÍ³¡ª¡ªClossus¡¡ÊÇ¡°¾ÞÈË¡±µÄÒâ˼£©¡£Ëƺõ´óдÐÎʽ»á±»ºöÂÔ¡£¡¡¡¡
£¨2£©¡¡³ý·Ç¼ÆËã»úÓÐÒ»¸ö»î¶¯µÄTCP/IP¡¡Á¬½Ó£¬·ñÔò¡¡RMI¡¡²»Äܹ¤×÷£¬¼´Ê¹ËùÓÐ×é¼þ¶¼Ö»ÐèÒªÔÚ±¾µØ»úÆ÷ÀﻥÏàͨ¡¡
ÐÅ¡£ÕâÒâζ×ÅÔÚÊÔͼÔËÐгÌÐò֮ǰ£¬±ØÐëÁ¬½Óµ½×Ô¼ºµÄ¡¡ISP¡¡£¨ÒòÌØÍø·þÎñÌṩÕߣ©£¬·ñÔò»áµÃµ½Ò»Ð©º¬ÒåÄ£¡¡
ºýµÄÎ¥ÀýÏûÏ¢¡£¡¡¡¡
¡¡¡¡
¢ß£ºÎªÕÒ³öÕâЩÐÅÏ¢£¬ÎÒ²»ÖªËðÉËÁ˶àÉÙ¸öÄÔϸ°û¡£¡¡¡¡
¡¡¡¡
¿¼Âǵ½ÕâЩÒòËØ£¬bind£¨£©ÃüÁî±ä³ÉÁËÏÂÃæÕâ¸öÑù×Ó£º¡¡¡¡
Naming¡£bind£¨¡¨//colossus£º2005/PerfectTime¡¨£»¡¡pt£©£»¡¡¡¡
ÈôʹÓÃĬÈ϶˿ڡ¡1099£¬¾ÍûÓбØÒªÖ¸¶¨Ò»¸ö¶Ë¿Ú£¬ËùÒÔ¿ÉÒÔʹÓ㺡¡¡¡
Naming¡£bind£¨¡¨//colossus/PerfectTime¡¨£»¡¡pt£©£»¡¡¡¡
ÔÚJDK¡¡Î´À´µÄ°æ±¾ÖУ¨1¡£1Ö®ºó£©£¬Ò»µ©¸ÄÕýÁË¡¡localhost¡¡µÄÎÊÌ⣬¾ÍÄÜÕý³£µØ½øÐб¾µØ²âÊÔ£¬È¥µô¡¡IPµØ¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡584¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡586¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Ö·£¬Ö»Ê¹Óñêʶ·û£º¡¡¡¡
Naming¡£bind£¨¡¨PerfectTime¡¨£»¡¡pt£©£»¡¡¡¡
·þÎñÃûÊÇÈÎÒâµÄ£»ËüÔÚÕâÀïÕýºÃΪ¡¡PerfectTime£¬ºÍÀàÃûÒ»Ñù£¬µ«Äã¿ÉÒÔ¸ù¾ÝÇé¿öÈÎÒâÐ޸ġ£×îÖØÒªµÄÊÇÈ·¡¡
±£ËüÔÚ×¢²á±íÀïÊǸö¶ÀÒ»ÎÞ¶þµÄÃû×Ö£¬ÒÔ±ã¿Í»§Õý³£µØ»ñÈ¡Ô¶³Ì¶ÔÏó¡£ÈôÕâ¸öÃû×ÖÒÑÔÚ×¢²á±íÀïÁË£¬¾Í»áµÃ¡¡
µ½Ò»¸öAlreadyBoundException¡¡Î¥Àý¡£Îª·ÀÖ¹Õâ¸öÎÊÌ⣬¿É¿¼ÂǼá³ÖʹÓá¡rebind£¨£©¡¡£¬·ÅÆúbind£¨£©¡£ÕâÊÇÓÉÓÚ¡¡
rebind£¨£©ÒªÃ´»áÌí¼ÓÒ»¸öÐÂÌõÄ¿£¬ÒªÃ´½«Í¬ÃûµÄÌõÄ¿Ìæ»»µô¡£¡¡¡¡
¾¡¹Ümain£¨£©Í˳ö£¬ÎÒÃǵĶÔÏóÒѾ´´½¨²¢×¢²á£¬ËùÒÔ»áÓÉ×¢²á±íÒ»Ö±±£³Ö»î¶¯×´Ì¬£¬µÈºò¿Í»§µ½´ï²¢·¢³ö¶Ô¡¡
ËüµÄÇëÇó¡£Ö»Òªrmiregistry¡¡´¦ÓÚÔËÐÐ״̬£¬¶øÇÒÎÒÃÇûÓÐΪÃû×Öµ÷Óá¡Naming¡£unbind£¨£©·½·¨£¬¶ÔÏó¾Í¿Ï¶¨¡¡
λÓÚÄǸöµØ·½¡£¿¼Âǵ½Õâ¸öÔÒò£¬ÔÚÎÒÃÇÉè¼Æ×Ô¼ºµÄ´úÂëʱ£¬ÐèÒªÏȹرա¡rmiregistry£¬²¢ÔÚ±àÒëÔ¶³Ì¶ÔÏó¡¡
µÄÒ»¸öа汾ʱÖØÐÂÆô¶¯Ëü¡£¡¡¡¡
²¢²»Ò»¶¨Òª½«rmiregistry¡¡×÷Ϊһ¸öÍⲿ½ø³ÌÆô¶¯¡£ÈôÊÂÇ°ÖªµÀ×Ô¼ºµÄÊÇÒªÇóÓÃÒÔ×¢²á±íµÄΨһһ¸öÓ¦Ó㬡¡
¾Í¿ÉÔÚ³ÌÐòÄÚ²¿Æô¶¯Ëü£¬Ê¹ÓÃÏÂÊö´úÂ룺¡¡¡¡
LocateRegistry¡£createRegistry£¨2005£©£»¡¡¡¡
ºÍÇ°ÃæÒ»Ñù£¬2005¡¡´ú±íÎÒÃÇÔÚÕâ¸öÀý×ÓÀïÑ¡ÓõĶ˿ںš£ÕâµÈ¼ÛÓÚÔÚÃüÁîÐÐÖ´ÐС¡rmiregistry¡¡2005¡£µ«ÔÚÉè¡¡
¼ÆRMI¡¡´úÂëʱ£¬ÕâÖÖ×ö·¨ÍùÍùÏԵøü¼Ó·½±ã£¬ÒòΪËüÈ¡ÏûÁËÆô¶¯ºÍÖÐÖ¹×¢²á±íËùÐèµÄ¶îÍâ²½Öè¡£Ò»µ©Ö´ÐÐÍê¡¡
Õâ¸ö´úÂ룬¾Í¿ÉÏóÒÔÇ°Ò»ÑùʹÓÃNaming¡¡½øÐС°°ó¶¨¡±¡ª¡ªbind£¨£©¡£¡¡¡¡
15¡£8¡£3¡¡´´½¨¸ùÓë¸É¡¡¡¡
Èô±àÒëºÍÔËÐÐPerfectTime¡£java£¬¼´Ê¹rmiregistry¡¡ÕýÈ·ÔËÐУ¬ËüÒ²ÎÞ·¨¹¤×÷¡£ÕâÊÇÓÉÓÚRMI¡¡µÄ¿ò¼ÜÉÐδ¾Í¡¡
λ¡£Ê×ÏȱØÐë´´½¨¸ùºÍ¸É£¬ÒÔ±ãÌṩÍøÂçÁ¬½Ó²Ù×÷£¬²¢Ê¹ÎÒÃǽ«Ô¶³Ì¶ÔÏóαװ³É×Ô¼º»úÆ÷ÄÚµÄij¸ö±¾µØ¶Ô¡¡
Ï󡣡¡¡¡
ËùÓÐÕâЩĻºóµÄ¹¤×÷¶¼ÊÇÏ൱¸´Ôӵġ£ÎÒÃÇ´ÓÔ¶³Ì¶ÔÏó´«Èë¡¢´«³öµÄÈκζÔÏ󶼱ØÐë¡°implement¡¡¡¡
Serializable¡±£¨Èç¹ûÏë´«µÝÔ¶³ÌÒýÓ㬶ø·ÇÕû¸ö¶ÔÏ󣬶ÔÏóµÄ²ÎÊý¾Í¿ÉÒÔ¡°implement¡¡Remote¡±£©¡£Òò´Ë¡¡
¿ÉÒÔÏëÏ󣬵±¸ùºÍ¸Éͨ¹ýÍøÂç¡°»ã¼¯¡±ËùÓвÎÊý²¢·µ»Ø½á¹ûµÄʱºò£¬»á×Ô¶¯½øÐÐÐòÁл¯ÒÔ¼°Êý¾ÝµÄÖØÐÂ×°¡¡
Åä¡£ÐÒÔ˵ÄÊÇ£¬ÎÒÃǸù±¾Ã»±ØÒªÁ˽âÕâЩ·½ÃæµÄÈκÎϸ½Ú£¬µ«¸ùºÍ¸ÉÈ´ÊDZØÐë´´½¨µÄ¡£Ò»¸ö¼òµ¥µÄ¹ý³ÌÈç¡¡
Ï£ºÔÚ±àÒëºÃµÄ´úÂëÖе÷ÓÃrmic£¬Ëü»á´´½¨±ØÐèµÄһЩÎļþ¡£ËùÒÔΨһҪ×öµÄÊÂÇé¾ÍÊÇΪ±àÒë¹ý³ÌÐÂÌíÒ»¸ö¡¡
²½Öè¡£¡¡¡¡
È»¶ø£¬rmic¡¡¹¤¾ßÓëÌض¨µÄ°üºÍÀà·¾¶ÓкܴóµÄ¹ØÁª¡£PerfectTime¡£java¡¡Î»ÓÚ°ü¡¡c15¡£Ptime¡¡ÖУ¬¼´Ê¹ÎÒÃǵ÷Óá¡
ÓëPerfectTime¡£class¡¡Í¬Ò»Ä¿Â¼ÄÚµÄrmic£¬rmic¡¡¶¼ÎÞ·¨ÕÒµ½Îļþ¡£ÕâÊÇÓÉÓÚËüËÑË÷µÄÊÇÀà·¾¶¡£Òò´Ë£¬ÎÒÃÇ¡¡
±ØÐëͬʱָ¶¨Àà·¾¶£¬¾ÍÏóÏÂÃæÕâÑù£º¡¡¡¡
rmic¡¡c15¡£PTime¡£PerfectTime¡¡¡¡
Ö´ÐÐÕâ¸öÃüÁîʱ£¬²¢²»Ò»¶¨·ÇÒªÔÚ°üº¬ÁË¡¡PerfectTime¡£class¡¡µÄĿ¼ÖУ¬µ«½á¹û»áÖÃÓÚµ±Ç°Ä¿Â¼¡£¡¡¡¡
Èôrmic¡¡³É¹¦ÔËÐУ¬Ä¿Â¼Àï¾Í»á¶à³öÁ½¸öÐÂÀࣺ¡¡¡¡
PerfectTime_Stub¡£class¡¡¡¡
PerfectTime_Skel¡£class¡¡¡¡
ËüÃÇ·Ö±ð¶ÔÓ¦¸ù£¨Stub¡¡£©ºÍ¸É£¨Skeleton¡¡£©¡£ÏÖÔÚ£¬ÎÒÃÇÒÑ×¼±¸ºÃÈ÷þÎñÆ÷Óë¿Í»§»¥Ï๵ͨÁË¡£¡¡¡¡
15¡£8¡£4¡¡Ê¹ÓÃÔ¶³Ì¶ÔÏó¡¡¡¡
RMI¡¡È«²¿µÄ×ÚÖ¼¾ÍÊǾ¡¿ÉÄܼò»¯Ô¶³Ì¶ÔÏóµÄʹÓá£ÎÒÃÇÔÚ¿Í»§³ÌÐòÖÐÒª×öµÄΨһһ¼þ¶îÍâµÄÊÂÇé¾ÍÊDzéÕÒ²¢¡¡
´Ó·þÎñÆ÷È¡»ØÔ¶³Ì½Ó¿Ú¡£×Ô´ËÒÔºó£¬Ê£ÏµÄÊÂÇé¾ÍÊÇÆÕͨµÄJava¡¡±à³Ì£º½«ÏûÏ¢·¢¸ø¶ÔÏó¡£ÏÂÃæÊÇʹÓá¡
PerfectTime¡¡µÄ³ÌÐò£º¡¡¡¡
¡¡¡¡
//£º¡¡DisplayPerfectTime¡£java¡¡¡¡
//¡¡Uses¡¡remote¡¡object¡¡PerfectTime¡¡¡¡
package¡¡c15¡£ptime£»¡¡¡¡
import¡¡java¡£rmi¡£*£»¡¡¡¡
import¡¡java¡£rmi¡£registry¡£*£»¡¡¡¡
¡¡¡¡
public¡¡class¡¡DisplayPerfectTime¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£setSecurityManager£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡585¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡587¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡new¡¡RMISecur¡¡ityManager£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡PerfectTimeI¡¡t¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨PerfectTimeI£©Naming¡£lookup£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨//colossus£º2005/PerfectTime¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡10£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Perfect¡¡time¡¡=¡¡¡¨¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡t¡£getPerfectTime£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨Exception¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡e¡£printStackTrace£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ID×Ö´®ÓëÄǸöÓá¡Naming¡¡×¢²á¶ÔÏóµÄÄǸö×Ö´®ÊÇÏàͬµÄ£¬µÚÒ»²¿·ÖÖ¸³öÁË¡¡URL¡¡ºÍ¶Ë¿ÚºÅ¡£ÓÉÓÚÎÒÃÇ×¼±¸Ê¹Óá¡
Ò»¸öURL£¬ËùÒÔÒ²¿ÉÒÔÖ¸¶¨ÒòÌØÍøÉϵÄһ̨»úÆ÷¡£¡¡¡¡
´ÓNaming¡£lookup£¨£©·µ»ØµÄ±ØÐëÔìÐ͵½Ô¶³Ì½Ó¿Ú£¬¶ø²»Êǵ½Àà¡£Èô»»ÓÃÀ࣬»áµÃµ½Ò»¸öÎ¥ÀýÌáʾ¡£¡¡¡¡
ÔÚÏÂÊö·½·¨µ÷ÓÃÖУº¡¡¡¡
t¡£getPerfectTime£¨¡¡£©¡¡¡¡
ÎÒÃÇ¿É¿´µ½Ò»µ©»ñµÃÔ¶³Ì¶ÔÏóµÄ¾ä±ú£¬ÓÃËü½øÐеıà³ÌÓëÓñ¾µØ¶ÔÏóµÄ±à³ÌÊǷdz£ÏàËÆ£¨½öÓÐÒ»¸öÇø±ð£ºÔ¶¡¡
³Ì·½·¨»á¡°ÖÀ¡±³öÒ»¸ö¡¡RemoteException¡¡Î¥Àý£©¡£¡¡¡¡
15¡£8¡£5¡¡RMI¡¡µÄÌæÑ¡·½°¸¡¡¡¡
RMI¡¡Ö»ÊÇÒ»ÖÖ´´½¨ÌØÊâ¶ÔÏóµÄ·½Ê½£¬Ëü´´½¨µÄ¶ÔÏó¿Éͨ¹ýÍøÂç·¢²¼¡£Ëü×î´óµÄÓŵã¾ÍÊÇÌṩÁËÒ»ÖÖ¡°´¿¡¡
Java¡¡¡±·½°¸£¬µ«¼ÙÈçÒѾÓÐÐí¶àÓÃÆäËûÓïÑÔ±àдµÄ´úÂ룬ÔòRMI¡¡¿ÉÄÜÎÞ·¨Âú×ãÎÒÃǵÄÒªÇó¡£Ä¿Ç°£¬Á½ÖÖ×î¾ß¡¡
¾ºÕùÁ¦µÄÌæÑ¡·½°¸ÊÇ΢ÈíµÄD¡¡£¨¸ù¾Ý΢ÈíµÄ¼Æ»®£¬Ëü×îÖÕ»áÒÆÖ²µ½³ýWindows¡¡ÒÔÍâµÄÆäËûƽ̨£©ÒÔ¼°¡¡
CORBA¡£CORBA¡¡×ÔJava¡¡1¡£1¡¡±ã¿ªÊ¼Ö§³Ö£¬ÊÇÒ»ÖÖÈ«ÐÂÉè¼ÆµÄ¸ÅÄÃæÏò¿çƽ̨ӦÓá£ÔÚÓÉ¡¡Orfali¡¡ºÍ¡¡Harkey¡¡
±àÖøµÄ¡¶Client/Server¡¡Programming¡¡with¡¡Java¡¡and¡¡CORBA¡·Ò»ÊéÖУ¨John¡¡Wiley&Sons¡¡1997¡¡Äê³ö°æ£©£¬¡¡
´ó¼Ò¿É»ñµÃ¶ÔJava¡¡Öеķֲ¼Ê½¶ÔÏóµÄÈ«Ãæ½éÉÜ£¨¸ÃÊéËƺõ¶Ô¡¡CORBA¡¡ËƺõÓÐЩƫ¼û£©¡£ÎªCORBA¡¡¸³ÓèÒ»¸ö½Ï¹«¡¡
ÕýµÄ¶Ô´ýµÄÒ»±¾ÊéÊÇÓÉ¡¡Andreas¡¡Vogel¡¡ºÍKeith¡¡Duddy¡¡±àдµÄ¡¶Java¡¡Programming¡¡with¡¡CORBA¡·£¬John¡¡¡¡
Wiley&Sons¡¡ÓÚ¡¡1997¡¡Äê³ö°æ¡£¡¡¡¡
15¡£9¡¡×ܽᡡ¡¡
ÓÉÓÚƪ·ùËùÏÞ£¬»¹ÓÐÆäËûÐí¶àÉæ¼°Á¬ÍøµÄ¸ÅÄîûÓнéÉܸø´ó¼Ò¡£Java¡¡Ò²Îª¡¡URL¡¡ÌṩÁËÏ൱ȫÃæµÄÖ§³Ö£¬°üÀ¨¡¡
ΪÒòÌØÍøÉϲ»Í¬ÀàÐ͵Ŀͻ§ÌṩÐÒé¿ØÖÆÆ÷µÈµÈ¡£¡¡¡¡
³ý´ËÒÔÍ⣬һÖÖÕýÔÚÖð²½Á÷Ðеļ¼Êõ½Ð×÷Servlet¡¡Server¡£ËüÊÇÒ»ÖÖÒòÌØÍø·þÎñÆ÷Ó¦Óã¬Í¨¹ýJava¡¡¿ØÖÆ¿Í¡¡
»§ÇëÇ󣬶ø·ÇʹÓÃÒÔÇ°ÄÇÖÖËٶȺÜÂý¡¢ÇÒÏ൱Âé·³µÄCGI¡¡£¨Í¨ÓÃÍø¹Ø½Ó¿Ú£©ÐÒé¡£ÕâÒâζ×ÅΪÁËÔÚ·þÎñÆ÷ÄÇ¡¡
Ò»¶ËÌṩ·þÎñ£¬ÎÒÃÇ¿ÉÒÔÓÃJava¡¡±à³Ì£¬²»±ØʹÓÃ×Ô¼º²»ÊìϤµÄÆäËûÓïÑÔ¡£ÓÉÓÚ¡¡Java¡¡¾ßÓÐÓÅÐãµÄÒÆÖ²ÄÜÁ¦£¬¡¡
ËùÒÔ²»±Ø¹ØÐľßÌåÈÝÄÉÕâ¸ö·þÎñÆ÷ÊÇʲôƽ̨¡£¡¡¡¡
ËùÓÐÕâЩÒÔ¼°ÆäËûÌØÐÔ¶¼ÔÚ¡¶Java¡¡Network¡¡Progr¡¡amming¡·Ò»ÊéÖеõ½ÁËÏêϸ½²Êö¡£¸ÃÊéÓÉ¡¡Elliotte¡¡Rusty¡¡¡¡
Harold¡¡±àÖø£¬O'Reilly¡¡ÓÚ¡¡1997¡¡Äê³ö°æ¡£¡¡¡¡
15¡£10¡¡Á·Ï°¡¡¡¡
£¨1£©¡¡±àÒëºÍÔËÐб¾ÕÂÖеÄJabberServer¡¡ºÍ¡¡JabberClient¡¡³ÌÐò¡£½Ó×űà¼Ò»Ï³ÌÐò£¬É¾È¥ÎªÊäÈëºÍÊä³öÉè¼Æ¡¡
µÄËùÓлº³å»úÖÆ£¬È»ºóÔٴαàÒëºÍÔËÐУ¬¹Û²ìһϽá¹û¡£¡¡¡¡
£¨2£©¡¡´´½¨Ò»¸ö·þÎñÆ÷£¬ÓÃËüÇëÇóÓû§ÊäÈëÃÜÂ룬Ȼºó´ò¿ªÒ»¸öÎļþ£¬²¢½«Îļþͨ¹ýÍøÂçÁ¬½Ó´«ËͳöÈ¥¡£´´½¨¡¡
Ò»¸öͬ¸Ã·þÎñÆ÷Á¬½ÓµÄ¿Í»§£¬ÎªÆä·ÖÅäÊʵ±µÄÃÜÂ룬Ȼºó²¶»ñºÍ±£´æÎļþ¡£ÔÚ×Ô¼ºµÄ»úÆ÷ÉÏÓá¡localhost¡¡
¡¡£¨Í¨¹ýµ÷ÓÃInetAddress¡£getByName£¨null£©Éú³É±¾µØ¡¡IPµØÖ·¡¡127¡£0¡£0¡£1£©²âÊÔÕâÁ½¸ö³ÌÐò¡£¡¡¡¡
£¨3£©¡¡ÐÞ¸ÄÁ·Ï°2¡¡ÖеijÌÐò£¬ÁîÆäÓöàÏ̻߳úÖƶԶà¸ö¿Í»§½øÐпØÖÆ¡£¡¡¡¡
£¨4£©¡¡ÐÞ¸ÄJabberClient£¬½ûÖ¹Êä³öˢУ¬²¢¹Û²ì½á¹û¡£¡¡¡¡
£¨5£©¡¡ÒÔShowHTML¡£java¡¡Îª»ù´¡£¬´´½¨Ò»¸ö³ÌÐòƬ£¬ÁîÆä³ÉΪ¶Ô×Ô¼ºWeb¡¡Õ¾µãµÄÌض¨²¿·Ö½øÐÐÃÜÂë±£»¤µÄ´ó¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡586¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡588¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÃÅ¡£¡¡¡¡
£¨6£©¡¡¡¡£¨¿ÉÄÜÓÐЩÄѶȣ©´´½¨Ò»¶Ô¿Í»§£¯·þÎñÆ÷³ÌÐò£¬ÀûÓÃÊý¾Ý±¨£¨Datagram¡¡£©½«Ò»¸öÎļþ´Óһ̨»úÆ÷´«µ½Áí¡¡
һ̨£¨²Î¼û±¾ÕÂÊý¾Ý±¨Ð¡½ÚĩβµÄÐðÊö£©¡£¡¡¡¡
£¨7£©¡¡¡¡£¨¿ÉÄÜÓÐЩÄѶȣ©¶ÔVLookup¡£java¡¡³ÌÐò×÷Ò»·¬Ð޸ģ¬Ê¹ÎÒÃÇÄܵã»÷µÃµ½µÄ½á¹ûÃû×Ö£¬È»ºó³ÌÐò»á×Ô¶¯È¡¡¡
µÃÄǸöÃû×Ö£¬²¢°ÑËü¸´ÖƵ½¼ôÌù°å£¨ÒÔ±ãÎÒÃÇ·½±ãµØÕ³Ìùµ½×Ô¼ºµÄE¡mail¡¡£©¡£¿ÉÄÜÒª»Ø¹ýÍ·È¥Ñо¿Ò»ÏÂIO¡¡
Êý¾ÝÁ÷µÄÄÇÒ»Õ£¬»ØÒä¸ÃÈçºÎʹÓá¡Java¡¡1¡£1¡¡¼ôÌù°å¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡587¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡589¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡µÚ¡¡16¡¡Õ¡¡¡¡Éè¼Æ·¶Ê½¡¡¡¡
¡¡¡¡
±¾ÕÂÒªÏò´ó¼Ò½éÉÜÖØÒªµ«È´²¢²»ÊÇÄÇô´«Í³µÄ¡°·¶Ê½¡±£¨Pattern£©³ÌÐòÉè¼Æ·½·¨¡£¡¡¡¡
ÔÚÏòÃæÏò¶ÔÏó³ÌÐòÉè¼ÆµÄÑÝ»¯¹ý³ÌÖУ¬»òÐí×îÖØÒªµÄÒ»²½¾ÍÊÇ¡°Éè¼Æ·¶Ê½¡±£¨Design¡¡Pattern£©µÄÎÊÊÀ¡£Ëü¡¡
ÔÚÓÉGamma£¬Helm¡¡ºÍ¡¡Johnson¡¡±àÖøµÄ¡¶Design¡¡Patterns¡·Ò»ÊéÖỶ¨Òå³ÉÒ»¸ö¡°Àï³Ì±®¡±£¨¸ÃÊéÓÉ¡¡
Addison¡Wesley¡¡ÓÚ¡¡1995¡¡Äê³ö°æ£¬×¢ÊÍ¢Ù£©¡£ÄDZ¾ÊéÁгöÁ˽â¾öÕâ¸öÎÊÌâµÄ¡¡23¡¡ÖÖ²»Í¬µÄ·½·¨¡£ÔÚ±¾ÕÂÖУ¬ÎÒ¡¡
ÃÇ×¼±¸°éË漸¸öÀý×Ó½Òʾ³öÉè¼Æ·¶Ê½µÄ»ù±¾¸ÅÄî¡£Õâ»òÐíÄܼ¤ÆðÄúÔĶÁ¡¶Design¡¡Pattern¡·Ò»ÊéµÄÓûÍû¡£Ê¡¡
ʵÉÏ£¬ÄDZ¾ÊéÏÖÔÚÒѳÉΪ¼¸ºõËùÓС¡OOP¡¡³ÌÐòÔ±¶¼±Ø±¸µÄ²Î¿¼Êé¡£¡¡¡¡
¡¡¡¡
¢Ù£ºµ«¾¯¸æ´ó¼Ò£ºÊéÖеÄÀý×ÓÊÇÓá¡C£«£«Ð´µÄ¡£¡¡¡¡
¡¡¡¡
±¾ÕµĺóÒ»²¿·Ö°üº¬ÁËչʾÉè¼Æ½ø»¯¹ý³ÌµÄÒ»¸öÀý×Ó£¬Ê×ÏÈÊDZȽÏÔʼµÄ·½°¸£¬¾¹ýÖð½¥·¢Õ¹ºÍ¸Ä½ø£¬ÂýÂý¡¡
³ÉΪ¸ü·ûºÏÂß¼¡¢¸üΪǡµ±µÄÉè¼Æ¡£¸Ã³ÌÐò£¨·ÂÕæÀ¬»ø·ÖÀࣩһֱ¶¼ÔÚ½ø»¯£¬¿É½«ÕâÖÖ½ø»¯×÷Ϊ×Ô¼ºÉè¼Æ·½¡¡
°¸µÄÒ»¸öÔÐÍ¡ª¡ªÏÈΪÌض¨µÄÎÊÌâÌá³öÒ»¸öÊʵ±µÄ·½°¸£¬ÔÙÖ𲽸ÄÉÆ£¬Ê¹Æä³ÉΪ½â¾öÄÇÀàÎÊÌâÒ»ÖÖ×îÁé»îµÄ¡¡
·½°¸¡£16¡£1¡¡·¶Ê½µÄ¸ÅÄî¡¡¡¡
ÔÚ×ʼ£¬¿É½«·¶Ê½ÏëÏó³ÉÒ»ÖÖÌرð´ÏÃ÷¡¢Äܹ»×ÔÎÒÊÊÓ¦µÄÊÖ·¨£¬Ëü¿ÉÒÔ½â¾öÌض¨ÀàÐ͵ÄÎÊÌâ¡£Ò²¾ÍÊÇ˵£¬¡¡
ËüÀàËÆһЩÐèҪȫÃæÈÏʶij¸öÎÊÌâµÄÈË¡£ÔÚÁ˽âÁËÎÊÌâµÄ·½·½ÃæÃæÒÔºó£¬×îºóÌá³öÒ»Ì××îͨÓá¢×îÁé»îµÄ½â¡¡
¾ö·½°¸¡£¾ßÌåÎÊÌâ»òÐíÊÇÒÔÇ°¼ûµ½²¢½â¾ö¹ýµÄ¡£È»¶ø£¬´ÓÇ°µÄ·½°¸Ò²Ðí²¢²»ÊÇ×îÍêÉƵģ¬´ó¼Ò»á¿´µ½ËüÈçºÎ¡¡
ÔÚÒ»¸ö·¶Ê½Àï¾ßÌå±í´ï³öÀ´¡£¡¡¡¡
¾¡¹ÜÎÒÃdzÆ֮Ϊ¡°Éè¼Æ·¶Ê½¡±£¬µ«ËüÃÇʵ¼ÊÉϲ¢²»¾ÖÏÞÓÚÉè¼ÆÁìÓò¡£Ë¼¿¼¡°·¶Ê½¡±Ê±£¬Ó¦ÍÑÀ봫ͳÒâÒåÉÏ·Ö¡¡
Îö¡¢Éè¼ÆÒÔ¼°ÊµÊ©µÄ˼¿¼·½Ê½¡£Ïà·´£¬¡°·¶Ê½¡±ÊÇÔÚÒ»¸ö³ÌÐòÀï¾ßÌå±í´ïÒ»Ì×ÍêÕûµÄ˼Ï룬ËùÒÔËüÓÐʱ¿ÉÄÜ¡¡
³öÏÖÔÚ·ÖÎö½×¶Î»òÕ߸߼¶Éè¼Æ½×¶Î¡£ÕâÒ»µãÊǷdz£ÓÐȤµÄ£¬ÒòΪ·¶Ê½¾ßÓÐÒÔ´úÂëÐÎʽֱ½ÓʵÏÖµÄÐÎʽ£¬ËùÒÔ¡¡
¿ÉÄܲ»Ï£ÍûËüÔڵͼ¶Éè¼Æ»òÕß¾ßÌåʵʩÒÔÇ°ÏÔ¶³öÀ´£¨¶øÇÒÊÂʵÉÏ£¬³ý·ÇÕæÕý½øÈëÄÇЩ½×¶Î£¬·ñÔòÒ»°ãÒâʶ¡¡
²»µ½×Ô¼ºÐèÒªÒ»¸ö·¶Ê½À´½â¾öÎÊÌ⣩¡£¡¡¡¡
·¶Ê½µÄ»ù±¾¸ÅÄîÒà¿É¿´³ÉÊdzÌÐòÉè¼ÆµÄ»ù±¾¸ÅÄÌí¼ÓÒ»²ãеijéÏó£¡Ö»ÒªÎÒÃdzéÏóÁËijЩ¶«Î÷£¬¾ÍÏ൱ÓÚ¡¡
¸ôÀëÁËÌض¨µÄϸ½Ú¡£¶øÇÒÕâºóÃæ×îÒýÈËעĿµÄ¶¯»ú¾ÍÊÇ¡°½«±£³Ö²»±äµÄ¶«Î÷ÉíÉÏ·¢ÉúµÄ±ä»¯¹ÂÁ¢³öÀ´¡±¡£Õâ¡¡
Ñù×öµÄÁíÒ»¸öÔÒòÊÇÒ»µ©·¢ÏÖ³ÌÐòµÄij²¿·ÖÓÉÓÚÕâÑù»òÄÇÑùµÄÔÒò¿ÉÄÜ·¢Éú±ä»¯£¬ÎÒÃÇÒ»°ã¶¼Ïë·ÀÖ¹ÄÇЩ¸Ä¡¡
±äÔÚ´úÂëÄÚ²¿·±ÑܳöÆäËû±ä»¯¡£ÕâÑù×ö²»½ö¿ÉÒÔ½µµÍ´úÂëµÄά»¤´ú¼Û£¬Ò²¸ü±ãÓÚÎÒÃÇÀí½â£¨½á¹ûͬÑùÊǽµµÍ¡¡
¿ªÏú£©¡£¡¡¡¡
ΪÉè¼Æ³ö¹¦ÄÜÇ¿´óÇÒÒ×ÓÚά»¤µÄÓ¦ÓÃÏîÄ¿£¬Í¨³£×îÀ§ÄѵIJ¿·Ö¾ÍÊÇÕÒ³öÎÒ³Æ֮Ϊ¡°ÁìÍ·±ä»¯¡±µÄ¶«Î÷¡£ÕâÒâ¡¡
ζ×ÅÐèÒªÕÒ³öÔì³Éϵͳ¸Ä±äµÄ×îÖØÒªµÄ¶«Î÷£¬»òÕß»»Ò»¸ö½Ç¶È£¬ÕÒ³ö¸¶³ö´ú¼Û×î¸ß¡¢¿ªÏú×î´óµÄÄÇÒ»²¿·Ö¡£¡¡
Ò»µ©·¢ÏÖÁË¡°ÁìÍ·±ä»¯¡±£¬¾Í¿ÉÒÔΪ×Ô¼º¶¨ÏÂÒ»¸ö½¹µã£¬Î§ÈÆËüÕ¹¿ª×Ô¼ºµÄÉè¼Æ¡£¡¡¡¡
ËùÒÔÉè¼Æ·¶Ê½µÄ×îÖÕÄ¿±ê¾ÍÊǽ«´úÂëÖб仯µÄÄÚÈݸôÀ뿪¡£Èç¹û´ÓÕâ¸ö½Ç¶È¹Û²ì£¬¾Í»á·¢ÏÖ±¾Êéʵ¼ÊÒѲÉÓá¡
ÁËһЩÉè¼Æ·¶Ê½¡£¾Ù¸öÀý×ÓÀ´Ëµ£¬¼Ì³Ð¿ÉÒÔÏëÏó³ÉÒ»ÖÖÉè¼Æ·¶Ê½£¨ÀàËÆÒ»¸öÓɱàÒëÆ÷ʵÏֵģ©¡£ÔÚ¶¼ÓµÓÐͬ¡¡
Ñù½Ó¿Ú£¨¼´±£³Ö²»±äµÄ¶«Î÷£©µÄ¶ÔÏóÄÚ²¿£¬ËüÔÊÐíÎÒÃDZí´ïÐÐΪÉϵIJîÒ죨¼´·¢Éú±ä»¯µÄ¶«Î÷£©¡£ºÏ³ÉÒà¿É¡¡
ÏëÏó³ÉÒ»ÖÖ·¶Ê½£¬ÒòΪËüÔÊÐíÎÒÃÇÐ޸ġª¡ª¶¯Ì¬»ò¾²Ì¬¡ª¡ªÓÃÓÚʵÏÖÀàµÄ¶ÔÏó£¬ËùÒÔÒ²ÄÜÐÞ¸ÄÀàµÄÔË×÷·½¡¡
ʽ¡£¡¡¡¡
ÔÚ¡¶Design¡¡Patterns¡·Ò»ÊéÖУ¬´ó¼Ò»¹ÄÜ¿´µ½ÁíÒ»ÖÖ·¶Ê½£º¡°¼Ì³ÐÆ÷¡±£¨¼´Iterator£¬Java¡¡1¡£0¡¡ºÍ¡¡1¡£1¡¡²»¡¡
¸ºÔðÈεذÑËü½Ð×÷Enumeration£¬¼´¡°Ã¶¾Ù¡±£»Java1¡£2¡¡µÄ¼¯ºÏÔò¸Ä»ØÁË¡°¼Ì³ÐÆ÷¡±µÄ³Æºô£©¡£µ±ÎÒÃÇÔÚ¼¯ºÏ¡¡
Àï±éÀú£¬Öð¸öÑ¡Ôñ²»Í¬µÄÔªËØʱ£¬¼Ì³ÐÆ÷¿É½«¼¯ºÏµÄʵʩϸ½ÚÓÐЧµØÒþ²ØÆðÀ´¡£ÀûÓü̳ÐÆ÷£¬¿ÉÒÔ±àд³öͨ¡¡
ÓõĴúÂ룬ÒÔ±ã¶ÔÒ»¸öÐòÁÐÀïµÄËùÓÐÔªËزÉȡijÖÖ²Ù×÷£¬Í¬Ê±²»±Ø¹ØÐÄÕâ¸öÐòÁÐÊÇÈçºÎ¹¹½¨µÄ¡£ÕâÑùÒ»À´£¬¡¡
ÎÒÃǵÄͨÓôúÂë¼´¿É°éËæÈκÎÄܲúÉú¼Ì³ÐÆ÷µÄ¼¯ºÏʹÓᣡ¡¡¡
16¡£1¡£1¡¡µ¥×Ó¡¡¡¡
»òÐí×î¼òµ¥µÄÉè¼Æ·¶Ê½¾ÍÊÇ¡°µ¥×Ó¡±£¨Singleton£©£¬ËüÄÜÌṩ¶ÔÏóµÄÒ»¸ö£¨¶øÇÒÖ»ÓÐÒ»¸ö£©ÊµÀý¡£µ¥×ÓÔÚ¡¡
Java¡¡¿âÖеõ½ÁËÓ¦Ó㬵«ÏÂÃæÕâ¸öÀý×ÓÏԵøüÖ±½ÓһЩ£º¡¡¡¡
¡¡¡¡
//£º¡¡SingletonPattern¡£java¡¡¡¡
//¡¡The¡¡Singleton¡¡design¡¡pattern£º¡¡you¡¡can¡¡¡¡
//¡¡never¡¡instantiate¡¡more¡¡than¡¡one¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡588¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡590¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
package¡¡c16£»¡¡¡¡
¡¡¡¡
//¡¡Since¡¡this¡¡isn't¡¡inherited¡¡from¡¡a¡¡Cloneable¡¡¡¡
//¡¡base¡¡class¡¡and¡¡cloneability¡¡isn't¡¡added£»¡¡¡¡
//¡¡making¡¡it¡¡final¡¡prevents¡¡cloneability¡¡from¡¡¡¡
//¡¡being¡¡added¡¡in¡¡any¡¡derived¡¡classes£º¡¡¡¡
final¡¡class¡¡Singleton¡¡£û¡¡¡¡
¡¡¡¡private¡¡static¡¡Singleton¡¡s¡¡=¡¡new¡¡Singleton£¨47£©£»¡¡¡¡
¡¡¡¡private¡¡int¡¡i£»¡¡¡¡
¡¡¡¡private¡¡Singleton£¨int¡¡x£©¡¡£û¡¡i¡¡=¡¡x£»¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡Singleton¡¡getHandle£¨£©¡¡£û¡¡¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡s£»¡¡¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡int¡¡getValue£¨£©¡¡£û¡¡return¡¡i£»¡¡£ý¡¡¡¡
¡¡¡¡public¡¡void¡¡setValue£¨int¡¡x£©¡¡£û¡¡i¡¡=¡¡x£»¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡SingletonPattern¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Singleton¡¡s¡¡=¡¡Singleton¡£getHandle£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨s¡£getValue£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Singleton¡¡s2¡¡=¡¡Singleton¡£getHandle£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡s2¡£setValue£¨9£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨s¡£getValue£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Can't¡¡do¡¡this£º¡¡pile¡time¡¡error¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Singleton¡¡s3¡¡=¡¡£¨Singleton£©s2¡£clone£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨Exception¡¡e£©¡¡£û£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
´´½¨µ¥×ӵĹؼü¾ÍÊÇ·ÀÖ¹¿Í»§³ÌÐòÔ±²ÉÓóýÓÉÎÒÃÇÌṩµÄÖ®ÍâµÄÈκÎÒ»ÖÖ·½Ê½À´´´½¨Ò»¸ö¶ÔÏó¡£±ØÐ뽫ËùÓС¡
¹¹½¨Æ÷¶¼ÉèΪprivate¡¡£¨Ë½ÓУ©£¬¶øÇÒÖÁÉÙÒª´´½¨Ò»¸ö¹¹½¨Æ÷£¬ÒÔ·ÀÖ¹±àÒëÆ÷°ïÎÒÃÇ×Ô¶¯Í¬²½Ò»¸öĬÈϹ¹½¨¡¡
Æ÷£¨Ëü»á×Ô×ö´ÏÃ÷µØ´´½¨³ÉΪ¡°ÓѺõġ±¡ª¡ªfriendly£¬¶ø·Ç¡¡private£©¡£¡¡¡¡
´ËʱӦ¾ö¶¨ÈçºÎ´´½¨×Ô¼ºµÄ¶ÔÏó¡£ÔÚÕâ¶ù£¬ÎÒÃÇÑ¡ÔñÁ˾²Ì¬´´½¨µÄ·½Ê½¡£µ«Òà¿ÉÑ¡ÔñµÈºò¿Í»§³ÌÐòÔ±·¢³öÒ»¡¡
¸ö´´½¨ÇëÇó£¬È»ºó¸ù¾ÝËûÃǵÄÒªÇó¶¯Ì¬´´½¨¡£²»¹ÜÔÚÄÄÖÖÇé¿öÏ£¬¶ÔÏó¶¼Ó¦¸Ã±£´æΪ¡°Ë½ÓС±ÊôÐÔ¡£ÎÒÃÇͨ¡¡
¹ý¹«Ó÷½·¨Ìṩ·ÃÎÊ;¾¶¡£ÔÚÕâÀgetHandle£¨£©»á²úÉúÖ¸Ïò¡¡Singleton¡¡µÄÒ»¸ö¾ä±ú¡£Ê£ÏµĽӿڡ¡
¡¡£¨getValue£¨£©ºÍ¡¡setValue£¨£©£©ÊôÓÚÆÕͨµÄÀà½Ó¿Ú¡£¡¡¡¡
Java¡¡Ò²ÔÊÐíͨ¹ý¿Ë¡£¨Clone£©·½Ê½À´´´½¨Ò»¸ö¶ÔÏó¡£ÔÚÕâ¸öÀý×ÓÖУ¬½«ÀàÉèΪ¡¡final¡¡¿É½ûÖ¹¿Ë¡µÄ·¢Éú¡£¡¡
ÓÉÓÚSingleton¡¡ÊÇ´ÓObject¡¡Ö±½Ó¼Ì³ÐµÄ£¬ËùÒÔ¡¡clone£¨£©·½·¨»á±£³Ö¡¡protected¡¡£¨Êܱ£»¤£©ÊôÐÔ£¬²»Äܹ»Ê¹Óá¡
Ëü£¨Ç¿ÐÐʹÓûáÔì³É±àÒëÆÚ´íÎ󣩡£È»¶ø£¬¼ÙÈçÎÒÃÇÊÇ´ÓÒ»¸öÀà½á¹¹Öм̳У¬ÄǸö½á¹¹ÒѾ¹ýÔØÁËclone£¨£©¡¡
·½·¨£¬Ê¹Æä¾ßÓÐpublic¡¡ÊôÐÔ£¬²¢ÊµÏÖÁËCloneable¡¡£¬ÄÇôΪÁ˽ûÖ¹¿Ë¡£¬ÐèÒª¹ýÔØclone£¨£©£¬²¢ÖÀ³öÒ»¸ö¡¡
CloneNotSupportedException¡¡£¨²»Ö§³Ö¿Ë¡ΥÀý£©£¬¾ÍÏóµÚ12Õ½éÉܵÄÄÇÑù¡£Òà¿É¹ýÔØ¡¡clone£¨£©£¬²¢¼òµ¥µØ¡¡
·µ»Ø¡¡this¡£ÄÇÑù×ö»áÔì³ÉÒ»¶¨µÄ»ìÏý£¬ÒòΪ¿Í»§³ÌÐòÔ±¿ÉÄÜ´íÎóµØÈÏΪ¶ÔÏóÉÐδ¿Ë¡£¬ÈÔÈ»²Ù×ݵÄÊÇÔÀ´µÄ¡¡
ÄǸö¡£¡¡¡¡
×¢ÒâÎÒÃDz¢²»ÏÞÓÚÖ»ÄÜ´´½¨Ò»¸ö¶ÔÏó¡£Òà¿ÉÀûÓøü¼Êõ´´½¨Ò»¸öÓÐÏ޵ĶÔÏó³Ø¡£µ«ÔÚÄÇÖÖÇé¿öÏ£¬¿ÉÄÜÐèÒª¡¡
½â¾ö³ØÄÚ¶ÔÏóµÄ¹²ÏíÎÊÌâ¡£Èç¹û²»ÐÒÕæµÄÓöµ½Õâ¸öÎÊÌ⣬¿ÉÒÔ×Ô¼ºÉè¼ÆÒ»Ì×·½°¸£¬ÊµÏÖ¹²Ïí¶ÔÏóµÄµÇ¼ÇÓë³·¡¡
ÏûµÇ¼Ç¡£¡¡¡¡
16¡£1¡£2¡¡·¶Ê½·ÖÀà¡¡¡¡
¡¡¡¶Design¡¡Patterns¡·Ò»ÊéÌÖÂÛÁË23¡¡ÖÖ²»Í¬µÄ·¶Ê½£¬²¢ÒÀ¾ÝÈý¸ö±ê×¼·ÖÀࣨËùÓбê×¼¶¼Éæ¼°ÄÇЩ¿ÉÄÜ·¢Éú±ä¡¡
»¯µÄ·½Ã棩¡£ÕâÈý¸ö±ê×¼ÊÇ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡589¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡591¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£¨1£©¡¡´´½¨£º¶ÔÏóµÄ´´½¨·½Ê½¡£Õâͨ³£Éæ¼°¶ÔÏó´´½¨Ï¸½ÚµÄ¸
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡