JAVAÃæÏò¶ÔÏóÓëÉè¼ÆÄ£Ê½ - ͼÎÄ ÏÂÔØ±¾ÎÄ

3.3.3 Observer(¹Û²ìÕß)£ºÊÊÓÃÐÔÓë²ÎÓëÕßÊÊÓÃÐÔ£º

1£®µ±Ò»¸ö³éÏóÄ£ÐÍÓÐÁ½¸ö·½Ãæ, ÆäÖÐÒ»¸ö·½ÃæÒÀÀµÓÚÁíÒ»·½Ãæ¡£½«Õâ¶þÕß·â×°ÔÚ¶ÀÁ¢µÄ¶ÔÏóÖÐÒÔʹËüÃÇ¿ÉÒÔ¸÷×Ô¶ÀÁ¢µØ¸Ä±äºÍ¸´Óá£2£®µ±¶ÔÒ»¸ö¶ÔÏóµÄ¸Ä±äÐèҪͬʱ¸Ä±äÆäËü¶ÔÏó, ¶ø²»ÖªµÀ¾ßÌåÓжàÉÙ¶ÔÏóÓдý¸Ä±ä¡£3£®µ±Ò»¸ö¶ÔÏó±ØÐë֪ͨÆäËü¶ÔÏ󣬶øËüÓÖ²»Äܼٶ¨ÆäËü¶ÔÏóÊÇË­¡£»»ÑÔÖ®, Ä㲻ϣÍûÕâЩ¶ÔÏóÊǽôÃÜñîºÏµÄ¡£²ÎÓëÕߣº? Subject(Ä¿±ê)

¡ªÄ¿±êÖªµÀËüµÄ¹Û²ìÕß¡£¿ÉÒÔÓÐÈÎÒâ¶à¸ö¹Û²ìÕß¹Û²ìͬһ¸öÄ¿±ê¡£¡ªÌṩע²áºÍɾ³ý¹Û²ìÕß¶ÔÏóµÄ½Ó¿Ú¡£

3.3.3ObserverģʽµÄUMLÀàͼ

12108ÁÐ6ÁÐÁÐ420ÐÐ 1ÐÐ 2ÐÐ 3ÐÐ 4 1 2 33.3.4 Template method(Ä£°å·½·¨)¡ª¶ÔÏóÐÐΪÐÍģʽ1. Òâͼ

¶¨ÒåÒ»¸ö²Ù×÷ÖеÄËã·¨µÄ¹Ç¼Ü,¶ø½«Ò»Ð©²½ÖèÑÓ³Ùµ½×ÓÀàÖС£Te m p l a t e M e t h o dʹµÃ×ÓÀà¿ÉÒÔ²»¸Ä±äÒ»¸öËã·¨µÄ½á¹¹¼´¿ÉÖØ¶¨Òå¸ÃËã·¨µÄÄ³Ð©ÌØ¶¨²½Öè¡£2. ¶¯»ú

¿¼ÂÇÒ»¸öÌṩA p p l i c a t i o nºÍD o c u m e n tÀàµÄÓ¦Óÿò¼Ü¡£A p p l i c a t i o nÀฺÔð´ò¿ªÒ»¸öÒÑÓеÄÒÔÍⲿÐÎʽ´æ´¢µÄÎĵµ,ÈçÒ»¸öÎļþ¡£Ò»µ©Ò»¸öÎĵµÖеÄÐÅÏ¢´Ó¸ÃÎļþÖжÁ³öºó,Ëü¾ÍÓÉÒ»¸öDocument¶ÔÏó±íʾ¡£

³éÏóµÄApplicationÀàÔÚËüµÄOpenDocument²Ù×÷Öж¨ÒåÁË´ò¿ªºÍ¶Áȡһ¸öÎĵµµÄÿһ¸öÖ÷Òª²½Öè¡£Ëü¼ì²é¸ÃÎĵµÊÇ·ñÄܱ»´ò¿ª,´´½¨ÓëÓ¦ÓÃÏà¹ØµÄD o c u m e n t¶ÔÏó,½«Ëü¼Óµ½ËüÈëµÄÎĵµ¼¯ºÏÖÐ,²¢ÇÒ´ÓÒ»¸öÎļþÖжÁÈ¡¸ÃDocument¡£ÎÒÃdzÆO p e n D o c u m e n tΪһ¸öÄ£°å·½·¨(template method)¡£Ò»¸öÄ£°å·½·¨ÓÃһЩ³éÏóµÄ²Ù×÷¶¨ÒåÒ»¸öËã·¨,¶ø×ÓÀà½«ÖØ¶¨ÒåÕâЩ

3.3.4 Template method£ºÊÊÓÃÐԺͲÎÓëÕß

ÊÊÓÃÐÔ:

? Ò»´ÎÐÔʵÏÖÒ»¸öËã·¨µÄ²»±äµÄ²¿·Ö,²¢½«¿É±äµÄÐÐΪÁô¸ø×ÓÀàÀ´ÊµÏÖ¡£

? ¸÷×ÓÀàÖй«¹²µÄÐÐΪӦ±»ÌáÈ¡³öÀ´²¢¼¯Öе½Ò»¸ö¹«¹²¸¸ÀàÖÐÒÔ±ÜÃâ´úÂëÖØ¸´¡£¼´¡°ÖØ·Ö½âÒÔÒ»°ã»¯¡±£¬Ê×ÏÈʶ±ðÏÖÓдúÂëÖеIJ»Í¬Ö®´¦£¬²¢ÇÒ½«²»Í¬Ö®´¦·ÖÀëΪеIJÙ×÷¡£×îºó£¬ÓÃÒ»¸öµ÷ÓÃÕâЩеIJÙ×÷µÄÄ£°å·½·¨À´Ìæ»»ÕâЩ²»Í¬µÄ´úÂë¡£

¡ñ¿ØÖÆ×ÓÀàÀ©Õ¹¡£Ä£°å·½·¨Ö»ÔÚÌØ¶¨µãµ÷Óá°Hook Method£¨¹³×Ó·½·¨£©¡±²Ù×÷£¬ÕâÑù¾ÍÖ»ÔÊÐíÔÚÕâЩµã½øÐÐÀ©Õ¹¡£

²ÎÓëÕߣº

? AbstractClass(³éÏóÀà,ÈçApplication)

¡ª¶¨Òå³éÏóµÄÔ­Óï²Ù×÷( primitive operation),¾ßÌåµÄ×ÓÀà½«ÖØ¶¨ÒåËüÃÇÒÔʵÏÖÒ»¸öËã·¨¡£

? ConcreteClass(¾ßÌåÀà,ÈçMyApplication)

¡ªÊµÏÖÔ­Óï²Ù×÷ÒÔÍê³ÉËã·¨ÖÐÓëÌØ¶¨×ÓÀàÏà¹ØµÄ²½Öè¡£