ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
µÚÈýµç×ÓÊé ·µ»Ø±¾ÊéĿ¼ ¼ÓÈëÊéÇ© ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ¡ºÊղص½ÎÒµÄä¯ÀÀÆ÷¡»

Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ144²¿·Ö

¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡


¡¡¡¡

//¡¡Specific¡¡group¡¡of¡¡algorithms¡¡packaged¡¡¡¡

//¡¡in¡¡each¡¡implementation¡¡of¡¡Visitor£º¡¡¡¡

class¡¡PriceVisitor¡¡implements¡¡Visitor¡¡£û¡¡¡¡

¡¡¡¡private¡¡double¡¡alSum£»¡¡//¡¡Aluminum¡¡¡¡

¡¡¡¡private¡¡double¡¡pSum£»¡¡//¡¡Paper¡¡¡¡

¡¡¡¡private¡¡double¡¡gSum£»¡¡//¡¡Glass¡¡¡¡

¡¡¡¡private¡¡double¡¡cSum£»¡¡//¡¡Cardboard¡¡¡¡

¡¡¡¡public¡¡void¡¡visit£¨VAluminum¡¡al£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡double¡¡v¡¡=¡¡al¡£weight£¨£©¡¡*¡¡al¡£value£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨value¡¡of¡¡Aluminum=¡¡¡¨¡¡£«¡¡v£©£»¡¡¡¡

¡¡¡¡¡¡¡¡alSum¡¡£«=¡¡v£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡visit£¨VPaper¡¡p£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡double¡¡v¡¡=¡¡p¡£weight£¨£©¡¡*¡¡p¡£value£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨value¡¡of¡¡Paper=¡¡¡¨¡¡£«¡¡v£©£»¡¡¡¡

¡¡¡¡¡¡¡¡pSum¡¡£«=¡¡v£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡visit£¨VGlass¡¡g£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡double¡¡v¡¡=¡¡g¡£weight£¨£©¡¡*¡¡g¡£value£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨value¡¡of¡¡Glass=¡¡¡¨¡¡£«¡¡v£©£»¡¡¡¡

¡¡¡¡¡¡¡¡gSum¡¡£«=¡¡v£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡visit£¨VCardboard¡¡c£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡double¡¡v¡¡=¡¡c¡£weight£¨£©¡¡*¡¡c¡£value£¨£©¡¡£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨value¡¡of¡¡Cardboard¡¡=¡¡¡¨¡¡£«¡¡v£©£»¡¡¡¡

¡¡¡¡¡¡¡¡cSum¡¡£«=¡¡v£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡void¡¡total£¨£©¡¡£û¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡616¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡618¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Total¡¡Aluminum£º¡¡¡¨¡¡£«¡¡alSum¡¡£«¡¡¡¨n¡¨¡¡£«¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Total¡¡Paper£º¡¡¡¨¡¡£«¡¡pSum¡¡£«¡¡¡¨n¡¨¡¡£«¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Total¡¡Glass£º¡¡¡¨¡¡£«¡¡gSum¡¡£«¡¡¡¨n¡¨¡¡£«¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Total¡¡Cardboard£º¡¡¡¨¡¡£«¡¡cSum£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡WeightVisitor¡¡implements¡¡Visitor¡¡£û¡¡¡¡

¡¡¡¡private¡¡double¡¡alSum£»¡¡//¡¡Aluminum¡¡¡¡

¡¡¡¡private¡¡double¡¡pSum£»¡¡//¡¡Paper¡¡¡¡

¡¡¡¡private¡¡double¡¡gSum£»¡¡//¡¡Glass¡¡¡¡

¡¡¡¡private¡¡double¡¡cSum£»¡¡//¡¡Cardboard¡¡¡¡

¡¡¡¡public¡¡void¡¡visit£¨VAluminum¡¡al£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡alSum¡¡£«=¡¡al¡£weight£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨weight¡¡of¡¡Aluminum¡¡=¡¡¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡al¡£weight£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡visit£¨VPaper¡¡p£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡pSum¡¡£«=¡¡p¡£weight£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨weight¡¡of¡¡Paper¡¡=¡¡¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡p¡£weight£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡visit£¨VGlass¡¡g£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡gSum¡¡£«=¡¡g¡£weight£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨weight¡¡of¡¡Glass¡¡=¡¡¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡g¡£weight£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡visit£¨VCardboard¡¡c£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡cSum¡¡£«=¡¡c¡£weight£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨weight¡¡of¡¡Cardboard¡¡=¡¡¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡c¡£weight£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡void¡¡total£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Total¡¡weight¡¡Aluminum£º¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡alSum£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Total¡¡weight¡¡Paper£º¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡pSum£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Total¡¡weight¡¡Glass£º¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡gSum£©£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Total¡¡weight¡¡Cardboard£º¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡cSum£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡TrashVisitor¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡Vector¡¡bin¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡ParseTrash¡¡still¡¡works£»¡¡without¡¡changes£º¡¡¡¡

¡¡¡¡¡¡¡¡ParseTrash¡£fillBin£¨¡¨VTrash¡£dat¡¨£»¡¡bin£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡You¡¡could¡¡even¡¡iterate¡¡through¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡a¡¡list¡¡of¡¡visitors£¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡617¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡619¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡PriceVisitor¡¡pv¡¡=¡¡new¡¡PriceVisitor£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡WeightVisitor¡¡wv¡¡=¡¡new¡¡WeightVisitor£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Enumeration¡¡it¡¡=¡¡bin¡£elements£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡while£¨it¡£hasMoreElements£¨£©£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡Visitable¡¡v¡¡=¡¡£¨Visitable£©it¡£nextElement£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡v¡£accept£¨pv£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡v¡£accept£¨wv£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡pv¡£total£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡wv¡£total£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

×¢Òâmain£¨£©µÄÐÎ×´ÒÑÔٴη¢ÉúÁ˱仯¡£ÏÖÔÚÖ»ÓÐÒ»¸öÀ¬»ø£¨Trash£©Í²¡£Á½¸öVisitor¡¡¶ÔÏó±»½ÓÊÕµ½ÐòÁÐÖС¡

µÄÿ¸öÔªËØÄÚ£¬ËüÃÇ»áÍê³É×Ô¼º·ÝÄڵŤ×÷¡£Visitor¡¡¸ú×ÙËüÃÇ×Ô¼ºµÄÄÚ²¿Êý¾Ý£¬¼ÆËã³ö×ÜÖغͼ۸ñ¡£¡¡¡¡

×îºÃ£¬½«¶«Î÷´ÓÐòÁÐÖÐÈ¡³öµÄʱºò£¬³ýÁ˲»¿É±ÜÃâµØÏòTrash¡¡ÔìÐÍÒÔÍ⣬ÔÙûÓÐÔËÐÐÆÚµÄÀàÐÍÑéÖ¤¡£ÈôÔÚ¡¡

Java¡¡ÀïʵÏÖÁ˲ÎÊý»¯ÀàÐÍ£¬ÉõÖÁÄǸöÔìÐͲÙ×÷Ò²¿ÉÒÔ±ÜÃâ¡£¡¡¡¡

¶Ô±È֮ǰ½éÉܹýµÄË«ÖØÅÉDz·½°¸£¬Çø·ÖÕâÁ½ÖÖ·½°¸µÄÒ»¸ö°ì·¨ÊÇ£ºÔÚË«ÖØÅÉDz·½°¸ÖУ¬Ã¿¸ö×ÓÀà´´½¨Ê±Ö»»á¡¡

¹ýÔØÆäÖеÄÒ»¸ö¹ýÔØ·½·¨£¬¼´¡¡add£¨£©¡£¶øÔÚÕâÀÿ¸ö¹ýÔصÄvisit£¨£©·½·¨¶¼±ØÐëÔÚ¡¡Visitor¡¡µÄÿ¸ö×ÓÀàÖнø¡¡

ÐйýÔØ¡£¡¡¡¡

¡¡¡¡

1¡£¡¡¸ü¶àµÄ½áºÏ£¿¡¡¡¡

ÕâÀﻹÓÐÆäËûÐí¶à´úÂ룬Trash¡¡½á¹¹ºÍ¡¡Visitor¡¡½á¹¹Ö®¼ä´æÔÚ×ÅÃ÷ÏԵġ°½áºÏ¡±£¨Coupling¡¡£©¹Øϵ¡£È»¶ø£¬¡¡

ÔÚËüÃÇËù´ú±íµÄÀ༯ÄÚ²¿£¬Ò²´æÔÚן߶ȵÄÄý¾ÛÁ¦£º¶¼Ö»×öÒ»¼þÊÂÇ飨Trash¡¡ÃèÊöÀ¬»ø»ò·ÏÆ·£¬¶øVisitor¡¡

ÃèÊö¶ÔÀ¬»ø²ÉȡʲôÐж¯£©¡£×÷ΪһÌ×ÓÅÐãµÄÉè¼Æ·½°¸£¬ÕâÎÞÒÉÊǸöÁ¼ºÃµÄ¿ª¶Ë¡£µ±È»¾ÍÄ¿Ç°µÄÇé¿öÀ´Ëµ£¬¡¡

Ö»ÓÐÔÚÎÒÃÇÌí¼ÓеÄVisitor¡¡ÀàÐÍʱ²ÅÄÜÌå»áµ½ËüµÄºÃ´¦¡£µ«ÔÚÌí¼ÓÐÂÀàÐ͵ÄTrash¡¡Ê±£¬ËüÈ´ÏÔµÃÓÐЩ°­ÊÖ¡¡

°­½Å¡£¡¡¡¡

ÀàÓëÀàÖ®¼äµÍ¶ÈµÄ½áºÏÓëÀàÄڸ߶ȵÄÄý¾ÛÎÞÒÉÊÇÒ»¸öÖØÒªµÄÉè¼ÆÄ¿±ê¡£µ«Ö»ÒªÉÔ²»ÁôÉñ£¬¾Í¿ÉÄÜ·Á°­ÎÒÃǵá¡

µ½Ò»¸ö±¾¸Ã¸ü³öÉ«µÄÉè¼Æ¡£´Ó±íÃæ¿´£¬ÓÐЩÀ಻¿É±ÜÃâµØÏ໥¼ä´æÔÚ×ÅһЩ¡°Ç×ÃÜ¡±¹Øϵ¡£ÕâÖÖ¹Øϵͨ³£ÊÇ¡¡

³É¶Ô·¢ÉúµÄ£¬¿ÉÒÔ½Ð×÷¡°¶ÔÁª¡±£¨Couplet£©¡ª¡ª±ÈÈ缯ºÏºÍ¼Ì³ÐÆ÷£¨Enumeration£©¡£Ç°ÃæµÄTrash

Visitor¡¡¶ÔËƺõÒ²ÊÇÕâÑùµÄÒ»ÖÖ¡°¶ÔÁª¡±¡£¡¡¡¡



16¡£8¡¡RTTI¡¡ÕæµÄÓк¦Âð¡¡¡¡



±¾Õµĸ÷ÖÖÉè¼Æ·½°¸¶¼ÔÚŬÁ¦±ÜÃâʹÓÃRTTI£¬Õâ»òÐí»á¸ø´ó¼ÒÁôÏ¡°RTTI¡¡Óк¦¡±µÄÓ¡Ï󣨻¹¼ÇµÃ¿ÉÁ¯µÄ¡¡

goto¡¡Âð£¬ÓÉÓÚ¸øÈËÓ¡Ï󲻼ѣ¬¸ù±¾¾ÍûÓзŵ½Java¡¡ÀïÀ´£©¡£µ«Êµ¼ÊÇé¿ö²¢·Ç¾ø¶ÔÈç´Ë¡£ÕýÈ·µØ˵£¬Ó¦¸ÃÊÇ¡¡

RTTI¡¡Ê¹Óò»µ±²Å¡°Óк¦¡±¡£ÎÒÃÇÖ®ËùÒÔÏë±ÜÃâ¡¡RTTI¡¡µÄʹÓã¬ÊÇÓÉÓÚËüµÄ´íÎóÔËÓûáÔì³ÉÀ©Õ¹ÐÔÊܵ½Ë𺦡£¡¡

¶øÎÒÃÇÊÂÇ°Ìá³öµÄÄ¿±ê¾ÍÊÇÄÜÏòϵͳ×ÔÓɼÓÈëÐÂÀàÐÍ£¬Í¬Ê±±£Ö¤¶ÔÖÜΧµÄ´úÂëÔì³É¾¡¿ÉÄÜСµÄÓ°Ïì¡£ÓÉÓÚ¡¡

RTTI¡¡³£±»ÀÄÓã¨ÈÃËü²éÕÒϵͳÖеÄÿһÖÖÀàÐÍ£©£¬»áÔì³É´úÂëµÄÀ©Õ¹ÄÜÁ¦´ó´òÕÛ¿Û¡ª¡ªÌí¼ÓÒ»ÖÖÐÂÀàÐÍʱ£¬¡¡

±ØÐëÕÒ³öʹÓÃÁËRTTI¡¡µÄËùÓдúÂë¡£¼´Ê¹½öÒÅ©ÁËÆäÖеÄÒ»¸ö£¬Ò²²»ÄÜ´Ó±àÒëÆ÷ÄÇÀïµÃµ½ÈκΰïÖú¡£¡¡¡¡

È»¶ø£¬RTTI¡¡±¾Éí²¢²»»á×Ô¶¯²úÉú·ÇÀ©Õ¹ÐԵĴúÂë¡£ÈÃÎÒÃÇÔÙÀ´¿´Ò»¿´Ç°ÃæÌáµ½µÄÀ¬»ø»ØÊÕÀý×Ó¡£ÕâÒ»´Î×¼±¸¡¡

ÒýÈëÒ»ÖÖй¤¾ß£¬ÎÒ°ÑËü½Ð×÷TypeMap¡£ÆäÖаüº¬ÁËÒ»¸öHashtable¡¡£¨É¢ÁÐ±í£©£¬ÆäÖÐÈÝÄÉÁ˶à¸öVector£¬¡¡

µ«½Ó¿Ú·Ç³£¼òµ¥£º¿ÉÒÔÌí¼Ó£¨add£¨£©£©Ò»¸öжÔÏ󣬿ÉÒÔ»ñµÃ£¨get£¨£©£©Ò»¸öVector£¬ÆäÖаüº¬ÁËÊôÓÚijÖÖÌØ¡¡

¶¨ÀàÐ͵ÄËùÓжÔÏ󡣶ÔÓÚÕâ¸ö°üº¬µÄÉ¢ÁÐ±í£¬ËüµÄ¹Ø¼üÔÚÓÚ¶ÔÓ¦µÄVector¡¡ÀïµÄÀàÐÍ¡£ÕâÖÖÉè¼Æ·½°¸µÄÓŵ㡡

¡¡£¨¸ù¾ÝLarry¡¡O'Brien¡¡µÄ½¨Ò飩ÊÇÔÚÓöµ½Ò»ÖÖÐÂÀàÐ͵Äʱºò£¬TypeMap¡¡»á¶¯Ì¬¼ÓÈëÒ»ÖÖÐÂÀàÐÍ¡£ËùÒÔ²»¹Üʲ¡¡

ôʱºò£¬Ö»Òª½«Ò»ÖÖÐÂÀàÐͼÓÈëϵͳ£¨¼´Ê¹ÔÚÔËÐÐÆÚ¼äÌí¼Ó£©£¬ËüÒ²»áÕýÈ·ÎÞÎóµØµÃÒÔ½ÓÊÜ¡£¡¡¡¡

ÎÒÃǵÄÀý×ÓͬÑù½¨Á¢ÔÚ¡¡c16¡£Trash¡¡Õâ¸ö¡°°ü¡±£¨Package£©ÄÚµÄTrash¡¡ÀàÐͽṹµÄ»ù´¡ÉÏ£¨¶øÇÒÄǶùʹÓõġ¡

Trash¡£dat¡¡Îļþ¿ÉÒÔÕÕ°áµ½ÕâÀïÀ´£©¡£¡¡¡¡

¡¡¡¡

//£º¡¡DynaTrash¡£java¡¡¡¡¡¡

//¡¡Using¡¡a¡¡Hashtable¡¡of¡¡Vectors¡¡and¡¡RTTI¡¡¡¡

//¡¡to¡¡automatically¡¡sort¡¡trash¡¡into¡¡¡¡

//¡¡vectors¡£¡¡This¡¡solution£»¡¡desp¡¡ite¡¡the¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡618¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡620¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

//¡¡use¡¡of¡¡RTTI£»¡¡is¡¡extensible¡£¡¡¡¡

package¡¡c16¡£dynatrash£»¡¡¡¡

import¡¡c16¡£trash¡£*£»¡¡¡¡

import¡¡java¡£util¡£*£»¡¡¡¡

¡¡¡¡

//¡¡Generic¡¡TypeMap¡¡works¡¡in¡¡any¡¡situation£º¡¡¡¡

class¡¡TypeMap¡¡£û¡¡¡¡

¡¡¡¡private¡¡Hashtable¡¡t¡¡=¡¡new¡¡Hashtable£¨£©£»¡¡¡¡

¡¡¡¡public¡¡void¡¡add£¨Object¡¡o£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡Class¡¡type¡¡=¡¡o¡£getClass£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡if£¨t¡£containsKey£¨type£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Vector£©t¡£get£¨type£©£©¡£addElement£¨o£©£»¡¡¡¡

¡¡¡¡¡¡¡¡else¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡Vector¡¡v¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡v¡£addElement£¨o£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡t¡£put£¨type£»v£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡Vector¡¡get£¨Class¡¡type£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡£¨Vector£©t¡£get£¨type£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡Enumeration¡¡keys£¨£©¡¡£û¡¡return¡¡t¡£keys£¨£©£»¡¡£ý¡¡¡¡

¡¡¡¡//¡¡Returns¡¡handle¡¡to¡¡adapter¡¡class¡¡to¡¡allow¡¡¡¡

¡¡¡¡//¡¡callbacks¡¡from¡¡ParseTrash¡£fillBin£¨£©£º¡¡¡¡

¡¡¡¡public¡¡Fillable¡¡filler£¨£©¡¡£û¡¡¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Anonymous¡¡inner¡¡class£º¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡new¡¡Fillable£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡public¡¡void¡¡addTrash£¨Trash¡¡t£©¡¡£û¡¡add£¨t£©£»¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡£ý£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡DynaTrash¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡TypeMap¡¡bin¡¡=¡¡new¡¡TypeMap£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡ParseTrash¡£fillBin£¨¡¨Trash¡£dat¡¨£»bin¡£filler£¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Enumeration¡¡keys¡¡=¡¡bin¡£keys£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡while£¨keys¡£hasMoreElements£¨£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡Trash¡£sumValue£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bin¡£get£¨£¨Class£©keys¡£nextElement£¨£©£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

¾¡¹Ü¹¦ÄܺÜÇ¿£¬µ«¶ÔTypeMap¡¡µÄ¶¨ÒåÊǷdz£¼òµ¥µÄ¡£ËüÖ»ÊÇ°üº¬ÁËÒ»¸öÉ¢ÁÐ±í£¬Í¬Ê±add£¨£©¸ºµ£Á˴󲿷ֵġ¡

¹¤×÷¡£Ìí¼ÓÒ»¸öÐÂÀàÐÍʱ£¬ÄÇÖÖÀàÐ͵ÄClass¡¡¶ÔÏóµÄ¾ä±ú»á±»ÌáÈ¡³öÀ´¡£Ëæºó£¬ÀûÓÃÕâ¸ö¾ä±úÅжÏÈÝÄÉÁËÄÇ¡¡

Àà¶ÔÏóµÄÒ»¸öVector¡¡ÊÇ·ñÒÑ´æÔÚÓÚÉ¢ÁбíÖС£Èç´ð°¸Êǿ϶¨µÄ£¬¾ÍÌáÈ¡³öÄǸö¡¡Vector£¬²¢½«¶ÔÏó¼ÓÈëÆä¡¡

ÖУ»·´Ö®£¬¾Í½«Class¡¡¶ÔÏó¼°ÐÂVector¡¡×÷Ϊһ¸ö¡°¼ü£­Öµ¡±¶Ô¼ÓÈë¡£¡¡¡¡

ÀûÓÃkeys£¨£©¡¡£¬¿ÉÒԵõ½¶ÔËùÓÐClass¡¡¶ÔÏóµÄÒ»¸ö¡°Ã¶¾Ù¡±£¨Enumeration£©£¬¶øÇÒ¿ÉÓÃget£¨£©£¬¿Éͨ¹ýClass¡¡

¶ÔÏó»ñÈ¡¶ÔÓ¦µÄVector¡£¡¡¡¡

filler£¨£©·½·¨·Ç³£ÓÐȤ£¬ÒòΪËüÀûÓÃÁË¡¡ParseTrash¡£fillBin£¨£©µÄÉè¼Æ¡ª¡ª²»½öÄܳ¢ÊÔÌî³äÒ»¸öVector£¬Ò²ÄÜ¡¡

ÓÃËüµÄ¡¡addTrash£¨£©·½·¨ÊÔ×ÅÌî³äʵÏÖÁË¡¡Fillable¡¡£¨¿ÉÌî³ä£©½Ó¿ÚµÄÈκζ«Î÷¡£filter£¨£©¡¡ÐèÒª×öµÄÈ«²¿ÊÂÇé¾Í¡¡

Êǽ«Ò»¸ö¾ä±ú·µ»Ø¸øʵÏÖÁËFillable¡¡µÄÒ»¸ö½Ó¿Ú£¬È»ºó½«Õâ¸ö¾ä±ú×÷Ϊ²ÎÊý´«µÝ¸ø¡¡fillBin£¨£©£¬¾ÍÏóÏÂÃæÕâ¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡619¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡621¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

Ñù£º¡¡¡¡

ParseTrash¡£fillBin£¨¡¨Trash¡£dat¡¨£»¡¡bin¡£filler£¨£©£©£»¡¡¡¡

Ϊ²úÉúÕâ¸ö¾ä±ú£¬ÎÒÃDzÉÓÃÁËÒ»¸ö¡°ÄäÃûÄÚ²¿Àࡱ£¨ÒÑÔÚµÚ7¡¡Õ½²Êö£©¡£ÓÉÓÚ¸ù±¾²»ÐèÒªÓÃÒ»¸öÒÑÃüÃûµÄÀà¡¡

À´ÊµÏÖFillable¡¡£¬Ö»ÐèÒªÊôÓÚÄǸöÀàµÄÒ»¸ö¶ÔÏóµÄ¾ä±ú¼´¿É£¬ËùÒÔÕâÀïʹÓÃÄäÃûÄÚ²¿ÀàÊǷdz£Ç¡µ±µÄ¡£¡¡¡¡

¶ÔÕâ¸öÉè¼Æ£¬Òª×¢ÒâµÄÒ»¸öµØ·½ÊǾ¡¹ÜûÓÐÉè¼Æ³É¶Ô¹éÀà¼ÓÒÔ¿ØÖÆ£¬µ«ÔÚ¡¡fillBin£¨£©Ã¿´Î½øÐйéÀàµÄʱºò£¬¡¡

¶¼»á½«Ò»¸ö¡¡Trash¡¡¶ÔÏó²åÈë¡¡bin¡£¡¡¡¡

ͨ¹ýÇ°ÃæÄÇЩÀý×ÓµÄѧϰ£¬DynaTrash¡¡ÀàµÄ´ó¶àÊý²¿·Ö¶¼Ó¦µ±·Ç³£ÊìϤÁË¡£ÕâÒ»´Î£¬ÎÒÃDz»ÔÙ½«Ðµġ¡Trash¡¡

¶ÔÏóÖÃÈëÀàÐÍVector¡¡µÄÒ»¸öbin¡¡ÄÚ¡£ÓÉÓÚbin¡¡µÄÀàÐÍΪTypeMap£¬ËùÒÔ½«À¬»ø£¨Trash£©¶ª½øÀ¬»øͲ£¨Bin£©¡¡

µÄʱºò£¬TypeMap¡¡µÄÄÚ²¿¹éÀà»úÖÆ»áÁ¢¼´½øÐÐÊʵ±µÄ·ÖÀà¡£ÔÚTypeMap¡¡Àï±éÀú²¢¶Ôÿ¸ö¶ÀÁ¢µÄ¡¡Vector¡¡½øÐв١¡

×÷£¬ÕâÊÇÒ»¼þÏ൱¼òµ¥µÄÊÂÇ飺¡¡¡¡

¡¡¡¡

¡¡¡¡¡¡¡¡Enumeration¡¡keys¡¡=¡¡bin¡£keys£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡while£¨keys¡£hasMoreElements£¨£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡Trash¡£sumValue£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡bin¡£get£¨£¨Class£©keys¡£nextElement£¨£©£©£©£»¡¡¡¡

¡¡¡¡

¾ÍÏó´ó¼Ò¿´µ½µÄÄÇÑù£¬ÐÂÀàÐÍÏòϵͳµÄ¼ÓÈë¸ù±¾²»»áÓ°Ïìµ½ÕâЩ´úÂ룬Ò಻»áÓ°ÏìTypeMap¡¡ÖеĴúÂë¡£ÕâÏÔ¡¡

È»Êǽâ¾öÎÊÌâ×îÔ²ÂúµÄ·½°¸¡£¾¡¹ÜËüȷʵÑÏÖØÒÀÀµ¡¡RTTI£¬µ«Çë×¢ÒâÉ¢ÁбíÖеÄÿ¸ö¼ü£­Öµ¶Ô¶¼Ö»²éÕÒÒ»ÖÖÀà¡¡

ÐÍ¡£³ý´ËÒÔÍ⣬ÔÚÎÒÃÇÔö¼ÓÒ»ÖÖÐÂÀàÐ͵Äʱºò£¬²»»áÏÝÈë¡°Íü¼Ç¡±Ïòϵͳ¼ÓÈëÕýÈ·´úÂëµÄÞÏÞξ³µØ£¬ÒòΪ¸ù¡¡

±¾¾ÍûÓÐʲô´úÂëÐèÒªÌí¼Ó¡£¡¡¡¡



16¡£9¡¡×ܽᡡ¡¡



´Ó±íÃæ¿´£¬ÓÉÓÚÏó¡¡TrashVisitor¡£java¡¡ÕâÑùµÄÉè¼Æ°üº¬Á˱ÈÔçÆÚÉè¼ÆÊýÁ¿¸ü¶àµÄ´úÂ룬ËùÒÔ»áÁôÏÂЧÂʲ»¸ß¡¡

µÄÓ¡Ïó¡£ÊÔͼÓø÷ÖÖÉè¼Æ·½°¸´ïµ½Ê²Ã´Ä¿µÄÓ¦¸ÃÊÇÎÒÃÇ¿¼ÂǵÄÖص㡣Éè¼Æ·¶Ê½ÌرðÊʺϡ°½«·¢Éú±ä»¯µÄ¶«Î÷¡¡

Óë±£³Ö²»±äµÄ¶«Î÷¸ôÀ뿪¡±¡£¶ø¡°·¢Éú±ä»¯µÄ¶«Î÷¡±¿ÉÒÔ´ú±íÐí¶àÖֱ仯¡£Ö®ËùÒÔ·¢Éú±ä»¯£¬¿ÉÄÜÊÇÓÉÓڳ̡¡

Ðò½øÈëÒ»¸öл·¾³£¬»òÕßÓÉÓÚµ±Ç°»·¾³µÄһЩ¶«Î÷·¢ÉúÁ˱仯£¨ÀýÈç¡°Óû§Ï£ÍûÔÚÆÁÄ»Éϵ±Ç°ÏÔʾµÄͼʾÖС¡

Ìí¼ÓÒ»ÖÖеļ¸ºÎÐÎ×´¡±£©¡£»òÕß¾ÍÏó±¾ÕÂÃèÊöµÄÄÇÑù£¬±ä»¯¿ÉÄÜÊǶԴúÂëÖ÷ÌåµÄ²»¶Ï¸Ä½ø¡£¾¡¹Ü·ÏÆ··ÖÀà¡¡

ÒÔÇ°µÄÀý×ÓÇ¿µ÷ÁËÐÂÐÍTrash¡¡ÏòϵͳµÄ¼ÓÈ룬µ«TrashVisitor¡£java¡¡ÔÊÐíÎÒÃÇ·½±ãµØÌí¼Óй¦ÄÜ£¬Í¬Ê±²»»á¡¡

¶ÔTrash¡¡½á¹¹Ôì³É¸ÉÈÅ¡£TrashVisitor¡£java¡¡Àïȷʵ¶à³öÁËÐí¶à´úÂ룬µ«ÔÚ¡¡Visitor¡¡ÀïÌí¼Óй¦ÄÜÖ»ÐèÒª¼«¡¡

СµÄ´ú¼Û¡£Èç¹û¾­³£¶¼Òª½øÐдËÀà»î¶¯£¬ÄÇô¶àһЩ´úÂëÒ²ÊÇÖµµÃµÄ¡£¡¡¡¡

±ä»¯ÐòÁеķ¢ÏÖ²¢·ÇÒ»¼þƽ³£Ê£»ÔÚ³ÌÐòµÄ³õʼÉè¼Æ³ǫ̈ÒÔÇ°£¬ÄÇЩ·ÖÎö¼ÒÒ»°ã²»¿ÉÄÜÔ¤²âµ½ÕâÖֱ仯¡£³ý¡¡

·Ç½øÈëÏîÄ¿Éè¼ÆµÄºóÆÚ£¬·ñÔòһЩ±ØÒªµÄÐÅÏ¢ÊDz»»áÏÔ¶³öÀ´µÄ£ºÓÐʱֻÓнøÈëÉè¼Æ»ò×îÖÕʵÏֽ׶Σ¬²ÅÄÜ¡¡

Ìå»áµ½¶Ô×Ô¼ºÏµÍ³Ò»¸ö¸üÉîÈë»ò¸ü²»Òײì¾õÐèÒª¡£Ìí¼ÓÐÂÀàÐÍʱ£¨ÕâÊÇ¡°»ØÊÕ¡±Àý×Ó×îÖ÷ÒªµÄÒ»¸öÖص㣩£¬¡¡

¿ÉÄÜ»áÒâʶµ½Ö»ÓÐ×Ô¼º½øÈëά»¤½×¶Î£¬¶øÇÒ¿ªÊ¼À©³äϵͳʱ£¬²ÅÐèÒªÒ»¸öÌض¨µÄ¼Ì³Ð½á¹¹¡£¡¡¡¡

ͨ¹ýÉè¼Æ·¶Ê½µÄѧϰ£¬´ó¼Ò¿ÉÌå»áµ½×îÖØÒªµÄÒ»¼þÊÂÇé¾ÍÊDZ¾ÊéÒ»Ö±ÐûÑïµÄÒ»¸ö¹Ûµã¡ª¡ª¶àÐÎÐÔÊÇOOP¡¡£¨Ãæ¡¡

Ïò¶ÔÏó³ÌÐòÉè¼Æ£©µÄÈ«²¿¡ª¡ªÒÑ·¢ÉúÁ˳¹µ×µÄ¸Ä±ä¡£»»¾ä»°Ëµ£¬ºÜÄÑ¡°»ñµÃ¡±¶àÐÎÐÔ£»¶øÒ»µ©»ñµÃ£¬¾ÍÐèÒª¡¡

³¢ÊÔ½«×Ô¼ºµÄËùÓÐÉè¼Æ¶¼ÔìÐ͵½Ò»¸öÌض¨µÄÄ£×ÓÀïÈ¥¡£¡¡¡¡

Éè¼Æ·¶Ê½Òª±íÃ÷µÄ¹ÛµãÊÇ¡°OOP¡¡²¢²»½ö½öͬ¶àÐÎÐÔÓйء±¡£Ó¦µ±Óë¡¡OOP¡¡Óй
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨1£© ²È£¨1£©
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡