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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
½»Ò×ϵͳÖеĹ۲ìÕßģʽ
 
×÷ÕߣºÕÅËÉÈ» À´Ô´£ºlinkedkeeper ·¢²¼ÓÚ£º 2017-7-25
  2996  次浏览      27
 

×î½üÔÚÖØ¹¹ÖÐÓõ½ÁËÉè¼ÆÄ£Ê½ÖеĹ۲ìÕßģʽ£¬¼òµ¥µÄ¸ú´ó¼Ò·ÖÏíһϹ۲ìÕßģʽµÄÔ­ÀíºÍʹÓó¡¾°¡£

ÔÚ½øÈëÕýÌâ֮ǰ£¬Ïȼòµ¥µÄ½éÉÜÒ»ÏÂÒµÎñ³¡¾°£¬½»Ò×ϵͳÖкÜÖØÒªµÄÒ»¸öÁ÷³Ì¾ÍÊǶ©µ¥×´Ì¬µÄÁ÷ת£¬Õâ´ÎÖØ¹¹µÄ¾ÍÊǶ©µ¥Íê³ÉµÄ²¿·Ö¡£

¶©µ¥Íê³ÉÖ®ºó£¬Òª×öºÜ¶àµÄºóÐø¹¤×÷£¬±ÈÈç֪ͨÓû§¡¢·¢Æð¼Æ·Ñ¡¢¿Ûµã¡¢Í¨ÖªÏà¹ØÏµÍ³µÈ¡£

ÖØ¹¹Ö®Ç°µÄ´úÂë½á¹¹ÈçÏ£º

ʾÀý´úÂ룺

class OrderMessageResolver implements MessageResolver {
DeductSupport duductSupport;
ChargingSupport chargingSupport;
MQSender mqSender;
void resolve(){
...
finishOrder(); //Íê³É¶©µ¥
charge() //¼Æ·Ñ;
deduct() //¿Ûµã;
mqSender.send(); //·¢ÏûÏ¢
...

}
void finishOrder() {
...
}
void charge() {
...
chargingSupport.charge();
...
}
void deduct() {
...
deductSupport.doDeduct ();
...
}
void noticeUser() {
...
mqSender.send();
...
}
}

ÕâÖֽṹÓм¸´óȱµã£º

µÚÒ»£¬resolve·½·¨ÀïÃæ×öÁËÌ«¶àµÄÂß¼­£¬µ¼Ö´úÂëµÄ¿É¶ÁÐÔ¼«²î£¬Î¬»¤ÆðÀ´Ò²Ï൱Âé·³¡£

µÚ¶þ£¬ÓкܶàÂß¼­²¢²»ÊÇOrderMessageResolverÕâ¸öÀàÓ¦¸Ã¸ºÔðµÄ£¬ÒѾ­³¬¹ýÁËÕâ¸öÀàµÄÖ°Ôð£¬ÕâÓëÃæÏò¶ÔÏóµÄÉè¼ÆÀíÄîÊÇÏàÎ¥±³µÄ¡£

µÚÈý£¬ºÜÄÑÀ©Õ¹£¬Ëæ×ÅÒµÎñµÄ·¢Õ¹£¬¶©µ¥Íê³ÉÖ®ºó¿Ï¶¨»¹»áÓиü¹ýµÄ¶¯×÷£¬ºóÃæÔÚÌí¼ÓÒµÎñÂß¼­µÄʱºò»á·Ç³£À§ÄÑ£¬¶ÔÕâ¸ö·½·¨µÄÐÞ¸ÄÒ²ÊÇÏ൱ΣÏյģ¬ÄãºÜÄÑÖªµÀÄãмӵÄÂß¼­»á²»»á¶Ô֮ǰµÄÂß¼­²úÉúÓ°Ï죬¶ÔÓڵĽ»Ò×ϵͳÀ´Ëµ£¬Ò»µ©²úÉúһЩÊý¾ÝÉϵÄÎó²î£¬ËðʧÊǷdz£²ÒÖØµÄ¡£

Õë¶ÔÒÔÉÏÕâЩÎÊÌ⣬ÒýÈë¹Û²ìÕßģʽ½â¾ö£¬¹Û²ìÕßģʽ¶¨ÒåÁËÒ»ÖÖÒ»¶Ô¶àµÄÒÀÀµ¹ØÏµ£¬Èöà¸ö¹Û²ìÕß¶ÔÏóͬʱ¼àÌýijһ¸öÖ÷Ìâ¶ÔÏó¡£Õâ¸öÖ÷Ìâ¶ÔÏóÔÚ״̬±ä»¯Ê±£¬»á֪ͨËùÓеĹ۲ìÕß¶ÔÏó£¬Ê¹ËûÃÇÄܹ»×Ô¶¯¸üÐÂ×Ô¼º£¬Ö÷ÌâÓë¹Û²ìÕßÖ®¼äÊÇÒ»ÖÖ·¢²¼-¶©ÔĵĹØÏµ¡£

ÏÂÃæÊÇJDK¶Ô¹Û²ìÕßģʽ֧³ÖµÄÀàͼ£º

ÔÚ±¾ÀýÖУ¬¶©µ¥µÄÍê³É״̬¾ÍÊDZ»¹Û²ìµÄÖ÷Ì⣬¶øÍê³ÉºóµÄ¸÷¸ö¶¯×÷¾ÍÊDz»Í¬µÄ¹Û²ìÕß¡£

ÖØ¹¹Ö®ºó£º

ʾÀý´úÂ룺

class OrderMessageResolver extends Observable implements MessageResolver {
void init() {
addObserver(); //³õʼ»¯Ìí¼Ó¹Û²ìÕß
}
void resolve() {
finishOrder(); //Íê³É¶©µ¥
notifyOvservers(); //֪ͨ¹Û²ìÕß
}
void finishOrder() {
...
}
//֪ͨ¸÷¸ö¹Û²ìÕß
void addObserver() {
addObserver(ChargingObserver);
addObserver(DeductObserver);
addObserver(NoticeUserObserver);
...
}
}
//¹Û²ìÕß»ùÀà
abstract class AbstractOrderFinishObserver implements Observer {
void update(Observable, args) {
param = parse(args);
try {
update(param);
} catch(...) {
...
}
}
abstract void update(param);
}
//¿Ûµã¹Û²ìÕß
class DeductObserver extends AbstractOrderFinishObserver {
DeductSupport duductSupport;
void update(param) {
...
deductSupport.doDeduct ();
...
}
}
//¼Æ·Ñ¹Û²ìÕß
class ChargingObserver extends AbstractOrderFinishObserver {
ChargingSupport chargingSupport;
void update(param) {
...
chargingSupport.charge();
...
}
}

ÔÚÖ÷Ìâ¶ÔÏó£¨OrderMessageResolver£©ÖÐÌí¼Ó¹Û²ìÕßÁÐ±í£¨ÕâÀïÖ»ÁгöÁ˼Ʒѡ¢¿ÛµãÁ½¸ö¹Û²ìÕߣ¬ÆäËûµÄÀàËÆ£¬Ôڴ˾Ͳ»Ò»Ò»ÁоÙÁË£©£¬¶©µ¥Íê³ÉÖ®ºó֪ͨ¸÷¸ö¹Û²ìÕß¡£JDK×Ô´ø¶Ô¹Û²ìÕßģʽµÄÖ§³Ö£¬±ÊÕßÓõľÍÊÇÕâ¸ö£¬Ô­ÀíºÍ´úÂë¶¼ºÜ¼òµ¥£¬´ó¼Ò¿ÉÒÔ×Ô¼ºÈ¥¿´Ô´Âë¡£

Õâ´ÎÖØ¹¹ÓÐʲôºÃ´¦ÄØ£¿Ê×ÏÈ£¬´úÂë½á¹¹ºÜÇåÎú£¬ÔÚ¶©µ¥Íê³É´¦ÀíÆ÷£¨OrderMessageResolver£©ÖУ¬¸üÐÂÍê¶©µ¥×´Ì¬¾ÍÒѾ­½áÊøÁË£¬ºóÐøµÄÂß¼­¶¼²»ÊÇËüµÄÖ°Ôð·¶Î§£¬Ö»ÐèÒª°Ñ¶©µ¥Íê³ÉµÄ״̬֪ͨ¸÷¸ö¹Û²ìÕߣ¬ÕâÑùÂß¼­¾Í²»»áñîºÏÔÚÒ»Æð¡£Æä´Î£¬Öع¹ºóµÄ´úÂë¾ßÓÐÁ¼ºÃµÄÀ©Õ¹ÐÔ£¬ºóÐøÔÙÓж©µ¥Íê³ÉÖ®ºóµÄÒµÎñÂß¼­Ö»ÐèÒªÌí¼ÓÒ»¸ö¹Û²ìÕߣ¬²»»á¶ÔÔ­À´µÄ´úÂëÓÐÈκεÄÈëÇÖ£¬ÕâÒ²·ûºÏOOPµÄÉè¼ÆÔ­Ôò¡ª¡°¶ÔÀ©Õ¹¿ª·Å£¬¶ÔÐ޸Ĺرա±¡£

×îºó£¬Ð´Ò»µã×Ô¼ºµÄ´úÂë½á¹¹µÄ¿´·¨£¬×÷Ϊһ¸öÓÐÇ»µ÷µÄ¹¤³Ìʦ£¬ÎÒÃÇÒª°ÑÎÒÃÇд¹ýµÄ´úÂëµ±×öÒ»¼þÒÕÊõÆ·£¬²»Òª·Å¹ýÉÏÃæÈκεÄÒ»µã覴ã¬ÓС°´úÂë½àñ±¡±ÍêÈ«²»ÊÇÒ»¼þ»µÊ£¬ÔÚ×Ðϸµñ×ÁµÄ¹ý³ÌÖУ¬ÎÒÃÇ»áÓкܶàÊÕ»ñ£¬Ò²»áÈÃ×Ô¼º¸üºÃµÄ³É³¤¡£

 

   
2996 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ