ºìÁªLinuxÃÅ»§
Linux°ïÖú

Java˽ÛÓ£ºÑÐÄ¥Éè¼Æģʽ Ö® Ö°ÔðÁ´Ä£Ê½£¨Chain of Responsibility£©

·¢²¼Ê±¼ä:2013-12-09 17:38:29À´Ô´:ºìÁª×÷Õß:suunny
23.3 ģʽ½²½â
23.3.1 ÈÏʶְÔðÁ´Ä£Ê½
£¨1£©Ä£Ê½¹¦ÄÜ
Ö°ÔðÁ´Ä£Ê½Ö÷ÒªÓÃÀ´´¦Àí£º¡°¿Í»§¶Ë·¢³öÒ»¸öÇëÇó£¬Óжà¸ö¶ÔÏó¶¼Óлú»áÀ´´¦ÀíÕâÒ»¸öÇëÇ󣬵«ÊÇ¿Í»§¶Ë²»ÖªµÀ¾¿¾¹Ë­»áÀ´´¦ÀíËûµÄÇëÇó¡±£¬ÕâÑùµÄÇé¿ö¡£Ò²¾ÍÊÇÐèÒªÈÃÇëÇóÕߺͽÓÊÕÕß½âñÕâÑù¾Í¿ÉÒÔ¶¯Ì¬µÄÇл»ºÍ×éºÏ½ÓÊÕÕßÁË¡£
ҪעÒâÔÚ±ê×¼µÄÖ°ÔðÁ´Ä£Ê½ÀïÃ棬ÊÇÖ»ÒªÓжÔÏó´¦ÀíÁËÇëÇó£¬Õâ¸öÇëÇó¾Íµ½´ËΪֹ£¬²»ÔÙ±»´«µÝºÍ´¦ÀíÁË¡£
Èç¹ûÊÇÒª±äÐÎʹÓÃÖ°ÔðÁ´£¬¾Í¿ÉÒÔÈÃÕâ¸öÇëÇó¼ÌÐø´«µÝ£¬Ã¿¸öÖ°Ôð¶ÔÏó¶ÔÕâ¸öÇëÇó½øÐÐÒ»¶¨µÄ¹¦ÄÜ´¦Àí£¬´Ó¶øÐγÉÒ»¸ö´¦ÀíÇëÇóµÄ¹¦ÄÜÁ´¡£
£¨2£©Òþʽ½ÓÊÕÕß
µ±¿Í»§¶Ë·¢³öÇëÇóµÄʱºò£¬¿Í»§¶Ë²¢²»ÖªµÀË­»áÕæÕý´¦ÀíËûµÄÇëÇ󣬿ͻ§¶ËÖ»ÖªµÀËûÌá½»ÇëÇóµÄµÚÒ»¸ö¶ÔÏó¡£´ÓµÚÒ»¸ö´¦Àí¶ÔÏó¿ªÊ¼£¬Õû¸öÖ°ÔðÁ´ÀïÃæµÄ¶ÔÏó£¬ÒªÃ´×Ô¼º´¦ÀíÇëÇó£¬ÒªÃ´¼ÌÐøת·¢¸øÏÂÒ»¸ö½ÓÊÕÕß¡£
Ò²¾ÍÊǶÔÓÚÇëÇóÕ߶øÑÔ£¬²¢²»ÖªµÀ×îÖյĽÓÊÕÕßÊÇË­£¬µ«ÊÇÒ»°ãÇé¿öÏ£¬×ÜÊÇ»áÓÐÒ»¸ö¶ÔÏóÀ´´¦ÀíµÄ£¬Òò´Ë³ÆΪÒþʽ½ÓÊÕÕß¡£
£¨3£©ÈçºÎ¹¹½¨Á´
Ö°ÔðÁ´µÄÁ´Ôõô¹¹½¨ÄØ£¿ÕâÊǸö´óÎÊÌ⣬ʵÏֵķ½Ê½Ò²ÊÇÎ廨°ËÃÅ£¬¹é½áÆðÀ´´óÖÂÓÐÒÔÏÂһЩ·½Ê½¡£
Ê×ÏÈÊÇ°´ÕÕʵÏֵĵط½À´Ëµ£º
¿ÉÒÔʵÏÖÔÚ¿Í»§¶Ë£¬ÔÚÌá½»ÇëÇóÇ°×éºÏÁ´£¬Ò²¾ÍÊÇÔÚʹÓõÄʱºò¶¯Ì¬×éºÏÁ´£¬³ÆΪÍⲿÁ´£»
Ò²¿ÉÒÔÔÚHandlerÀïÃæʵÏÖÁ´µÄ×éºÏ£¬ËãÊÇÄÚ²¿Á´µÄÒ»ÖÖ£»
µ±È»»¹ÓÐÒ»ÖÖ¾ÍÊÇÔÚ¸÷¸öÖ°Ôð¶ÔÏóÀïÃ棬Óɸ÷¸öÖ°Ôð¶ÔÏó×ÔÐоö¶¨ºóÐøµÄ´¦Àí¶ÔÏó£¬ÕâÖÖʵÏÖ·½Ê½ÒªÇóÿ¸öÖ°Ôð¶ÔÏó³ýÁ˽øÐÐÒµÎñ´¦ÀíÍ⣬»¹±ØÐëÁ˽âÕû¸öÒµÎñÁ÷³Ì¡£
°´ÕÕ¹¹½¨Á´µÄÊý¾ÝÀ´Ô´£¬Ò²¾ÍÊǾö¶¨ÁË°´ÕÕʲô˳ÐòÀ´×éºÏÁ´µÄÊý¾Ý£¬ÓÖ·ÖΪ¼¸ÖÖ£º
Ò»ÖÖ¾ÍÊÇÔÚ³ÌÐòÀïÃ涯̬×éºÏ£»
Ò²¿ÉÒÔͨ¹ýÍⲿ£¬±ÈÈçÊý¾Ý¿âÀ´»ñÈ¡×éºÏµÄÊý¾Ý£¬ÕâÖÖÊôÓÚÊý¾Ý¿âÇý¶¯µÄ·½Ê½£»
»¹ÓÐÒ»ÖÖ·½Ê½¾ÍÊÇͨ¹ýÅäÖÃÎļþ´«µÝ½øÀ´£¬Ò²¿ÉÒÔÊÇÁ÷³ÌµÄÅäÖÃÎļþ¡£
Èç¹ûÊÇ´ÓÍⲿ»ñÈ¡Êý¾ÝÀ´¹¹½¨Á´£¬ÄÇôÔÚ³ÌÐòÔËÐеÄʱºò£¬»á¶ÁÈ¡ÕâЩÊý¾Ý£¬È»ºó¸ù¾ÝÊý¾ÝµÄÒªÇóÀ´»ñÈ¡ÏàÓ¦µÄ¶ÔÏ󣬲¢×éºÏÆðÀ´¡£
»¹ÓÐÒ»ÖÖÊDz»ÐèÒª¹¹½¨Á´£¬ÒòΪÒÑÓеĶÔÏóÒѾ­×ÔÈ»¹¹³ÉÁ´ÁË£¬ÕâÖÖÇé¿ö¶à³öÏÖÔÚ×éºÏģʽ¹¹½¨µÄ¶ÔÏóÊ÷ÖУ¬ÕâÑù×Ó¶ÔÏó¿ÉÒÔºÜ×ÔÈ»µÄÏòÉÏÕÒµ½×Ô¼ºµÄ¸¸¶ÔÏó¡£¾ÍÏñ²¿ÃÅÈËÔ±µÄ×éÖ¯½á¹¹Ò»Ñù£¬¶¥²ãÊÇ×ܾ­Àí£¬×ܾ­ÀíÏÂÃæÊǸ÷¸ö²¿Ãŵľ­Àí£¬²¿Ãž­ÀíÏÂÃæÊÇÏîÄ¿¾­Àí£¬ÏîÄ¿¾­ÀíÏÂÃæÊǸ÷¸öÆÕͨԱ¹¤£¬×ÔÈ»¾Í¿ÉÒÔÐγɣºÆÕͨԱ¹¤¨¤ÏîÄ¿¾­Àí¨¤²¿Ãž­Àí¨¤×ܾ­ÀíÕâÑùµÄÁ´¡£
£¨4£©Ë­À´´¦Àí
Ö°ÔðÁ´ÖÐÄÇô¶à´¦Àí¶ÔÏ󣬵½µ×Ë­À´´¦ÀíÇëÇóÄØ£¬Õâ¸öÊÇÔÚÔËÐÐʱÆÚ¶¯Ì¬¾ö¶¨µÄ¡£µ±ÇëÇó±»´«µÝµ½Ä³¸ö´¦Àí¶ÔÏóµÄʱºò£¬Õâ¸ö¶ÔÏó»á°´ÕÕÒѾ­É趨ºÃµÄÌõ¼þÀ´Åжϣ¬ÊÇ·ñÊôÓÚ×Ô¼º´¦ÀíµÄ·¶Î§£¬Èç¹ûÊǾʹ¦Àí£¬Èç¹û²»ÊǾÍת·¢ÇëÇó¸øÏÂÒ»¸ö¶ÔÏó¡£
£¨5£©ÇëÇóÒ»¶¨»á±»´¦ÀíÂð£¿
ÔÚÖ°ÔðÁ´Ä£Ê½ÖУ¬ÇëÇó²»Ò»¶¨»á±»´¦Àí£¬ÒòΪ¿ÉÄÜûÓкÏÊʵĴ¦ÀíÕߣ¬ÇëÇóÔÚÖ°ÔðÁ´ÀïÃæ´ÓÍ·´«µÝµ½Î²£¬Ã¿¸ö´¦Àí¶ÔÏó¶¼Åжϲ»ÊôÓÚ×Ô¼º´¦Àí£¬×îºóÇëÇó¾ÍûÓжÔÏóÀ´´¦Àí¡£ÕâÒ»µãÊÇÐèҪעÒâµÄ¡£
¿ÉÒÔÔÚÖ°ÔðÁ´µÄÄ©¶ËʼÖÕ¼ÓÉÏÒ»¸ö²»Ö§³Ö´Ë¹¦ÄÜ´¦ÀíµÄÖ°Ôð¶ÔÏó£¬ÕâÑùÈç¹û´«µÝµ½ÕâÀ¾Í»á³öÏÖÌáʾ£¬±¾Ö°ÔðÁ´Ã»ÓжÔÏó´¦ÀíÕâ¸öÇëÇó¡£
23.3.2 ´¦Àí¶àÖÖÇëÇó
Ç°ÃæµÄʾÀý¶¼ÊÇͬһ¸öÖ°ÔðÁ´´¦ÀíÒ»ÖÖÇëÇóµÄÇé¿ö£¬ÏÖÔÚÓÐÕâÑùµÄÐèÇ󣬻¹ÊÇ·ÑÓÃÉêÇëµÄ¹¦ÄÜ£¬Õâ´ÎÊÇÉêÇëÔ¤Ö§²îÂ÷ѣ¬¼ÙÉ軹ÊÇͬһÁ÷³Ì£¬Ò²¾ÍÊÇ×éºÏͬһ¸öÖ°ÔðÁ´£¬´ÓÏîÄ¿¾­Àí¨¤´«µÝ¸ø²¿Ãž­Àí¨¤´«µÝ¸ø×ܾ­Àí£¬ËäÈ»Á÷³ÌÏàͬ£¬µ«ÊÇÿ¸ö´¦ÀíÀàÐèÒª´¦ÀíÁ½ÖÖÇëÇó£¬ËüÃǵľßÌåÒµÎñÂß¼­ÊDz»Ò»ÑùµÄ£¬ÄÇô¸ÃÈçºÎʵÏÖÄØ£¿
1£º¼òµ¥µÄ´¦Àí·½Ê½
Òª½â¾öÕâ¸öÎÊÌ⣬Ҳ²»ÊǺÜÀ§ÄÑ£¬Ò»¸ö¼òµ¥µÄ·½·¨¾ÍÊÇΪÿÖÖÒµÎñµ¥¶À¶¨ÒåÒ»¸ö·½·¨£¬È»ºó¿Í»§¶Ë¸ù¾Ý²»Í¬µÄÐèÒªµ÷Óò»Í¬µÄ·½·¨£¬»¹ÊÇͨ¹ý´úÂëÀ´Ê¾Àýһϡ£×¢ÒâÕâÀï¹ÊÒâµÄ°ÑÁ½¸ö·½·¨×öµÄÓÐЩ²»Ò»Ñù£¬Ò»¸öÊÇ·µ»ØStringÀàÐ͵ÄÖµ£¬Ò»¸öÊÇ·µ»ØbooleanÀàÐ͵ÄÖµ£»ÁíÍâÒ»¸öÊÇ·µ»Øµ½¿Í»§¶ËÔÙÊä³öÐÅÏ¢£¬Ò»¸öÊÇÖ±½ÓÔÚÖ°Ôð´¦ÀíÀïÃæ¾ÍÊä³öÐÅÏ¢¡£
£¨1£©Ê×ÏÈÊǸÄÔìÖ°Ôð¶ÔÏóµÄ½Ó¿Ú£¬Ìí¼ÓÉÏеÄÒµÎñ·½·¨£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ¶¨ÒåÖ°Ôð¶ÔÏóµÄ½Ó¿Ú
*/
public abstract class Handler {
/**
* ³ÖÓÐÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
*/
protected Handler successor = null;
/**
* ÉèÖÃÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
* @param successor ÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
*/
public void setSuccessor(Handler successor){
this.successor = successor;
}
/**
* ´¦Àí¾Û²Í·ÑÓõÄÉêÇë
* @param user ÉêÇëÈË
* @param fee ÉêÇëµÄÇ®Êý
* @return ³É¹¦»òʧ°ÜµÄ¾ßÌå֪ͨ
*/
public abstract String handleFeeRequest(String user,double fee);
/**
* ´¦ÀíÔ¤Ö§²îÂ÷ÑÓõÄÉêÇë
* @param user ÉêÇëÈË
* @param requestFee ÉêÇëµÄÇ®Êý
* @return ÊÇ·ñͬÒâ
*/
public abstract boolean handlePreFeeRequest(
String user,double requestFee);
}
£¨2£©Ö°ÔðµÄ½Ó¿Ú·¢ÉúÁ˸ı䣬¶ÔÓ¦µÄ´¦ÀíÀàÒ²Òª¸Ä±ä£¬Õ⼸¸ö´¦ÀíÀàÊÇÀàËƵģ¬Ô­ÓеŦÄܲ»±ä£¬È»ºóÔÚеÄʵÏÖ·½·¨ÀïÃ棬ͬÑùÅжÏÒ»ÏÂÊÇ·ñÊôÓÚ×Ô¼º´¦ÀíµÄ·¶Î§£¬Èç¹ûÊôÓÚ×Ô¼º´¦ÀíµÄ·¶Î§ÄǾʹ¦Àí£¬·ñÔò¾Í´«µÝµ½ÏÂÒ»¸ö´¦Àí¡£»¹ÊÇʾ·¶Ò»¸ö£¬¿´¿´ÏîÄ¿¾­ÀíµÄ´¦Àí°É£¬Ê¾Àý´úÂëÈçÏ£º
public class ProjectManager extends Handler{
public String handleFeeRequest(String user, double fee) {
String str = "";
//ÏîÄ¿¾­ÀíµÄȨÏޱȽÏС£¬Ö»ÄÜÔÚ500ÒÔÄÚ
if(fee < 500){
//ΪÁ˲âÊÔ£¬¼òµ¥µã£¬Ö»Í¬ÒâСÀîµÄ
if("СÀî".equals(user)){
str = "ÏîÄ¿¾­ÀíͬÒâ"+user+"¾Û²Í·ÑÓÃ"+fee+"ÔªµÄÇëÇó";
}else{
//ÆäËüÈËÒ»Âɲ»Í¬Òâ
str = "ÏîÄ¿¾­Àí²»Í¬Òâ"+user+"¾Û²Í·ÑÓÃ"+fee+"ÔªµÄÇëÇó";
}
return str;
}else{
//³¬¹ý500£¬¼ÌÐø´«µÝ¸ø¼¶±ð¸ü¸ßµÄÈË´¦Àí
if(this.successor!=null){
return successor.handleFeeRequest(user, fee);
}
}
return str;
}
public boolean handlePreFeeRequest(String user, double requestNum) {
//ÏîÄ¿¾­ÀíµÄȨÏޱȽÏС£¬Ö»ÄÜÔÚ5000ÒÔÄÚ
if(requestNum < 5000){
//¹¤×÷ÐèÒªÂͳͳͬÒâ
System.out.println("ÏîÄ¿¾­ÀíͬÒâ"+user
+"Ô¤Ö§²îÂ÷ÑÓÃ"+requestNum+"ÔªµÄÇëÇó");
return true;
}else{
//³¬¹ý5000£¬¼ÌÐø´«µÝ¸ø¼¶±ð¸ü¸ßµÄÈË´¦Àí
if(this.successor!=null){
return this.successor.handlePreFeeRequest(
user, requestNum);
}
}
return false;
}
}
ÆäËüµÄ´¦ÀíÀàËÆ£¬¾Í²»È¥ÑÝʾÁË¡£
£¨3£©×¼±¸ºÃÁ˸÷¸ö´¦ÀíÖ°ÔðµÄÀ࣬¿´¿´¿Í»§¶ËÈçºÎµ÷Óã¬Ê¾Àý´úÂëÈçÏ£º
public class Client {
public static void main(String[] args) {
//ÏÈÒª×é×°Ö°ÔðÁ´
Handler h1 = new GeneralManager();
Handler h2 = new DepManager();
Handler h3 = new ProjectManager();
h3.setSuccessor(h2);
h2.setSuccessor(h1);

//¿ªÊ¼²âÊÔÉêÇë¾Û²Í·ÑÓÃ
String ret1 = h3.handleFeeRequest("СÀî", 300);
System.out.println("the ret1="+ret1);
String ret2 = h3.handleFeeRequest("СÀî", 600);
System.out.println("the ret2="+ret2);
String ret3 = h3.handleFeeRequest("СÀî", 1200);
System.out.println("the ret3="+ret3);

//¿ªÊ¼²âÊÔÉêÇë²îÂ÷ÑÓÃ
h3.handlePreFeeRequest("СÕÅ", 3000);
h3.handlePreFeeRequest("СÕÅ", 6000);
h3.handlePreFeeRequest("СÕÅ", 32000);
}
}
ÔËÐеĽá¹ûÈçÏ£ºÊ¾Àý´úÂëÈçÏ£º
the ret1=ÏîÄ¿¾­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ300.0ÔªµÄÇëÇó
the ret2=²¿Ãž­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ600.0ÔªµÄÇëÇó
the ret3=×ܾ­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ1200.0ÔªµÄÇëÇó
ÏîÄ¿¾­ÀíͬÒâСÕÅÔ¤Ö§²îÂ÷ÑÓÃ3000.0ÔªµÄÇëÇó
²¿Ãž­ÀíͬÒâСÕÅÔ¤Ö§²îÂ÷ÑÓÃ6000.0ÔªµÄÇëÇó
×ܾ­ÀíͬÒâСÕÅÔ¤Ö§²îÂ÷ÑÓÃ32000.0ÔªµÄÇëÇó
2£ºÍ¨ÓÃÇëÇóµÄ´¦Àí·½Ê½
ÉÏÃæµÄʵÏÖ¿´ÆðÀ´ºÜÈÝÒ×£¬µ«ÊÇ×ÐϸÏëÏ룬ÕâÑùʵÏÖÓÐûÓÐʲôÎÊÌâÄØ£¿
ÕâÖÖʵÏÖ·½Ê½ÓÐÒ»¸öºÜÃ÷ÏÔµÄÎÊÌ⣬ÄǾÍÊÇÖ»ÒªÔö¼ÓÒ»¸öÒµÎñ£¬¾ÍÐèÒªÐÞ¸ÄÖ°ÔðµÄ½Ó¿Ú£¬ÕâÊǺܲ»Áé»îµÄ£¬Java¿ª·¢ÖкÜÇ¿µ÷ÃæÏò½Ó¿Ú±à³Ì£¬Òò´Ë½Ó¿ÚÓ¦¸ÃÏà¶Ô±£³ÖÎȶ¨£¬½Ó¿ÚÒ»¸Ä£¬ÐèÒªÐ޸ĵĵط½¾ÍÌ«¶àÁË£¬Æµ·±Ð޸Ľӿھø¶Ô²»ÊǸöºÃÖ÷Òâ¡£
ÄÇÓÐûÓÐʲôºÃ·½·¨À´ÊµÏÖÄØ£¿·ÖÎöÒ»ÏÂÏÖÔڱ仯µÄ¶«Î÷£º
Ò»ÊDz»Í¬µÄÒµÎñÐèÒª´«µÝµÄÒµÎñÊý¾Ý²»Í¬£»
¶þÊDz»Í¬µÄÒµÎñÇëÇóµÄ·½·¨²»Í¬£»
ÈýÊDz»Í¬µÄÖ°Ôð¶ÔÏó´¦ÀíÕâЩ²»Í¬µÄÒµÎñÇëÇóµÄÒµÎñÂß¼­²»Í¬
ÏÖÔÚÓÐÒ»ÖÖ¼òµ¥µÄ·½Ê½£¬¿ÉÒԽϺõĽâ¾öÕâЩÎÊÌâ¡£Ê×Ïȶ¨ÒåÒ»Ì×ͨÓõĵ÷Óÿò¼Ü£¬ÓÃÒ»¸öͨÓõÄÇëÇó¶ÔÏóÀ´·â×°ÇëÇ󴫵ݵIJÎÊý£»È»ºó¶¨ÒåÒ»¸öͨÓõĵ÷Ó÷½·¨£¬Õâ¸ö·½·¨²»È¥Çø·Ö¾ßÌåÒµÎñ£¬ËùÓеÄÒµÎñ¶¼ÊÇÕâÒ»¸ö·½·¨£¬ÄÇô¾ßÌåµÄÒµÎñÈçºÎÇø·ÖÄØ£¬¾ÍÊÇÔÚͨÓõÄÇëÇó¶ÔÏóÀïÃæ»áÓÐÒ»¸öÒµÎñµÄ±ê¼Ç£»µ½ÁËÖ°Ôð¶ÔÏóÀïÃ棬ԸÒâ´¦Àí¾Í¸úÔ­À´Ò»ÑùµÄ´¦Àí·½Ê½£¬Èç¹û²»Ô¸Òâ´¦Àí£¬¾Í´«µÝµ½ÏÂÒ»¸ö´¦Àí¶ÔÏó¾ÍºÃÁË¡£
¶ÔÓÚ·µ»ØÖµÒ²¿ÉÒÔÀ´¸öͨÓõģ¬×î¼òµ¥µÄ¾ÍÊÇʹÓÃObjectÀàÐÍ¡£
¿´Àý×Ó°É£¬ÎªÁËʾ·¶£¬ÏȾͼٶ¨Ö»ÓÐÒ»¸öÒµÎñ·½·¨£¬µÈ°ÑÕâÒ»¸ö·½·¨¸ã¶¨ÁË£¬Ã÷°×ÁË£¬È»ºóÔÙÀ©Õ¹Ò»¸öÒµÎñ·½·¨£¬¾ÍÄÜÇåÎúµØ¿´³öÕâÖÖÉè¼ÆµÄºÃ´¦ÁË¡£
£¨1£©ÏÈ¿´¿´Í¨ÓõÄÇëÇó¶ÔÏóµÄ¶¨Ò壬ʾÀý´úÂëÈçÏ£º
/**
* ͨÓõÄÇëÇó¶ÔÏó
*/
public class RequestModel {
/**
* ±íʾ¾ßÌåµÄÒµÎñÀàÐÍ
*/
private String type;
/**
* ͨ¹ý¹¹Ôì·½·¨°Ñ¾ßÌåµÄÒµÎñÀàÐÍ´«µÝ½øÀ´
* @param type ¾ßÌåµÄÒµÎñÀàÐÍ
*/
public RequestModel(String type){
this.type = type;
}
public String getType() {
return type;
}
}
£¨2£©¿´¿´´ËʱµÄͨÓÃÖ°Ôð´¦Àí¶ÔÏó£¬ÔÚÕâÀïҪʵÏÖÒ»¸öͨÓõĵ÷Óÿò¼Ü£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ¶¨ÒåÖ°Ôð¶ÔÏóµÄ½Ó¿Ú
*/
public abstract class Handler {
/**
* ³ÖÓÐÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
*/
protected Handler successor = null;
/**
* ÉèÖÃÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
* @param successor ÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
*/
public void setSuccessor(Handler successor){
this.successor = successor;
}
/**
* ͨÓõÄÇëÇó´¦Àí·½·¨
* @param rm ͨÓõÄÇëÇó¶ÔÏó
* @return ´¦ÀíºóÐèÒª·µ»ØµÄ¶ÔÏó
*/
public Object handleRequest(RequestModel rm){
if(successor != null){
//Õâ¸öÊÇĬÈϵÄʵÏÖ£¬Èç¹û×ÓÀ಻ԸÒâ´¦ÀíÕâ¸öÇëÇó£¬
//ÄǾʹ«µÝµ½ÏÂÒ»¸öÖ°Ôð¶ÔÏóÈ¥´¦Àí
return this.successor.handleRequest(rm);
}else{
System.out.println(
"ûÓкóÐø´¦Àí»òÕßÔÝʱ²»Ö§³ÖÕâÑùµÄ¹¦ÄÜ´¦Àí");
return false;
}
}
}
£¨3£©ÏÖÔÚÀ´¼ÓÉϵÚÒ»¸öÒµÎñ£¬¾ÍÊÇ¡°¾Û²Í·ÑÓÃÉêÇ롱µÄ´¦Àí£¬ÎªÁËÃèÊö¾ßÌåµÄÒµÎñÊý¾Ý£¬ÐèÒªÀ©Õ¹Í¨ÓõÄÇëÇó¶ÔÏ󣬰ÑÒµÎñÊý¾Ý·â×°½øÈ¥£¬ÁíÍⶨÒåÒ»¸öÇëÇó¶ÔÏó£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ·â×°¸ú¾Û²Í·ÑÓÃÉêÇëÒµÎñÏà¹ØµÄÇëÇóÊý¾Ý
*/
public class FeeRequestModel extends RequestModel{
/**
* Ô¼¶¨¾ßÌåµÄÒµÎñÀàÐÍ
*/
public final static String FEE_TYPE = "fee";
public FeeRequestModel() {
super(FEE_TYPE);
}
/**
* ÉêÇëÈË
*/
private String user;
/**
* ÉêÇë½ð¶î
*/
private double fee;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public double getFee() {
return fee;
}
public void setFee(double fee) {
this.fee = fee;
}
}
£¨4£©½ÓÏÂÀ´¸ÃʵÏÖÖ°Ôð¶ÔÏóµÄ´¦ÀíÁË£¬´óͬСÒìµÄ£¬»¹ÊÇ¿´Ò»¸ö¾ÍÐÐÁË£¬¿´¿´ÏîÄ¿¾­ÀíµÄ´¦Àí°É£¬ÔÚÕâ¸ö´¦ÀíÀàÀïÃ棬Ê×ÏÈÒª¸²¸Ç¸¸ÀàµÄͨÓÃÒµÎñ´¦Àí·½·¨£¬È»ºóÔÚÀïÃæ´¦Àí×Ô¼ºÏëҪʵÏÖµÄÒµÎñ£¬²»Ïë´¦ÀíµÄ¾ÍÈø¸ÀàÈ¥´¦Àí£¬¸¸Àà»áĬÈϵĴ«µÝ¸øÏÂÒ»¸ö´¦Àí¶ÔÏó£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ʵÏÖÏîÄ¿¾­Àí´¦Àí¾Û²Í·ÑÓÃÉêÇëµÄ¶ÔÏó
*/
public class ProjectManager extends Handler{
public Object handleRequest(RequestModel rm){
if(FeeRequestModel.FEE_TYPE
.equals(rm.getType())){
//±íʾ¾Û²Í·ÑÓÃÉêÇë
return handleFeeRequest(rm);
}else{
//ÆäËüµÄÏîÄ¿¾­ÀíÔÝʱ²»Ïë´¦Àí
return super.handleRequest(rm);
}
}
private Object handleFeeRequest(RequestModel rm) {
//ÏÈ°ÑͨÓõĶÔÏóÔìÐÍ»ØÀ´
FeeRequestModel frm =
(FeeRequestModel)rm;
String str = "";
//ÏîÄ¿¾­ÀíµÄȨÏޱȽÏС£¬Ö»ÄÜÔÚ500ÒÔÄÚ
if(frm.getFee() < 500){
//ΪÁ˲âÊÔ£¬¼òµ¥µã£¬Ö»Í¬ÒâСÀîµÄ
if("СÀî".equals(frm.getUser())){
str = "ÏîÄ¿¾­ÀíͬÒâ"+frm.getUser()
+"¾Û²Í·ÑÓÃ"+frm.getFee()+"ÔªµÄÇëÇó";
}else{
//ÆäËüÈËÒ»Âɲ»Í¬Òâ
str = "ÏîÄ¿¾­Àí²»Í¬Òâ"+frm.getUser()
+"¾Û²Í·ÑÓÃ"+frm.getFee()+"ÔªµÄÇëÇó";
}
return str;
}else{
//³¬¹ý500£¬¼ÌÐø´«µÝ¸ø¼¶±ð¸ü¸ßµÄÈË´¦Àí
if(this.successor!=null){
return successor.handleRequest(rm);
}
}
return str;
}
}
²¿Ãž­Àí¡¢×ܾ­ÀíµÄ´¦Àí¶ÔÏóºÍÏîÄ¿¾­ÀíµÄ´¦ÀíÀàËÆ£¬¾Í²»È¥Ê¾ÀýÁË¡£
£¨5£©¿Í»§¶ËÒ²ÐèÒª±ä»¯£¬¶ÔÓÚ¿Í»§¶Ë£¬Î¨Ò»µÄÂé·³ÊÇÐèÒªÖªµÀÿ¸öÒµÎñ¶ÔÓ¦µÄ¾ßÌåµÄÇëÇó¶ÔÏó£¬ÒòΪҪ·â×°ÒµÎñÊý¾Ý½øÈ¥£¬Ê¾Àý´úÂëÈçÏ£º
public class Client {
public static void main(String[] args) {
//ÏÈÒª×é×°Ö°ÔðÁ´
Handler h1 = new GeneralManager();
Handler h2 = new DepManager();
Handler h3 = new ProjectManager();
h3.setSuccessor(h2);
h2.setSuccessor(h1);

//¿ªÊ¼²âÊÔÉêÇë¾Û²Í·ÑÓÃ
FeeRequestModel frm = new FeeRequestModel();
frm.setFee(300);
frm.setUser("СÀî");
//µ÷Óô¦Àí
String ret1 = (String)h3.handleRequest(frm);
System.out.println("ret1="+ret1);

//ÖØÐÂÉèÖÃÉêÇë½ð¶î£¬ÔÙµ÷Óô¦Àí
frm.setFee(800);
h3.handleRequest(frm);
String ret2 = (String)h3.handleRequest(frm);
System.out.println("ret2="+ret2);

//ÖØÐÂÉèÖÃÉêÇë½ð¶î£¬ÔÙµ÷Óô¦Àí
frm.setFee(1600);
h3.handleRequest(frm);
String ret3 = (String)h3.handleRequest(frm);
System.out.println("ret3="+ret3);
}
}
ÔËÐнá¹ûÈçÏ£º
ret1=ÏîÄ¿¾­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ300.0ÔªµÄÇëÇó
ret2=²¿Ãž­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ800.0ÔªµÄÇëÇó
ret3=×ܾ­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ1600.0ÔªµÄÇëÇó
£¨6£©½ÓÏÂÀ´¿´¿´ÈçºÎÔÚ²»¸Ä¶¯ÏÖÓеĿò¼ÜµÄÇ°ÌáÏ£¬À©Õ¹ÐµÄÒµÎñ£¬ÕâÑù²ÅÄÜ˵Ã÷ÕâÖÖÉè¼ÆµÄÁé»îÐÔ¡£
¼ÙÈç¾ÍÊÇҪʵÏÖÉÏÃæʾÀý¹ýµÄÁíÍâÒ»¸ö¹¦ÄÜ¡°Ô¤Ö§²îÂ÷ÑÉêÇ롱°É¡£ÒªÏëÀ©Õ¹ÐµÄÒµÎñ£¬µÚÒ»²½¾ÍÊÇн¨Ò»¸ö·â×°ÒµÎñÊý¾ÝµÄ¶ÔÏó£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ·â×°¸úÔ¤Ö§²îÂ÷ÑÉêÇëÒµÎñÏà¹ØµÄÇëÇóÊý¾Ý
*/
public class PreFeeRequestModel extends RequestModel{
/**
* Ô¼¶¨¾ßÌåµÄÒµÎñÀàÐÍ
*/
public final static String FEE_TYPE = "preFee";
public PreFeeRequestModel() {
super(FEE_TYPE);
}
/**
* ÉêÇëÈË
*/
private String user;
/**
* ÉêÇë½ð¶î
*/
private double fee;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public double getFee() {
return fee;
}
public void setFee(double fee) {
this.fee = fee;
}
}
ÓÐЩÅóÓѻᷢÏÖ£¬Õâ¸ö¶ÔÏó¸ú·â×°¾Û²Í·ÑÓÃÉêÇëÒµÎñÊý¾ÝµÄ¶ÔÏ󼸺õÍêÈ«Ò»ÑùµÄ£¬ÕâÀïҪ˵Ã÷һϣ¬Ò»ÑùµÄÔ­ÒòÖ÷ÒªÊÇÎÒÃÇΪÁËÑÝʾ¼òµ¥£¬Éè¼ÆµÃÏàËÆ£¬Êµ¼ÊÒµÎñÖпÉÄÜÊDz»Ò»ÑùµÄ£¬Òò´Ë£¬×îºÃ»¹ÊÇÒ»¸öÒµÎñÒ»¸ö¶ÔÏó£¬Èç¹ûȷʵÓй«¹²µÄÊý¾Ý£¬¿ÉÒÔ¶¨Ò幫¹²µÄ¸¸À࣬×îºÃ²»ÒªÈò»Í¬µÄÒµÎñʹÓÃͳһ¸ö¶ÔÏó£¬ÈÝÒ×»ìÏý¡£
£¨7£©¶ÔÓÚ¾ßÌå½øÐÐÖ°Ôð´¦ÀíµÄÀ࣬±È½ÏºÃµÄ·½Ê½¾ÍÊÇÀ©Õ¹³ö×ÓÀàÀ´£¬È»ºóÔÚ×ÓÀàÀïÃæʵÏÖмÓÈëµÄÒµÎñ£¬µ±È»Ò²¿ÉÒÔÖ±½ÓÔÚÔ­À´µÄ¶ÔÏóÉϸġ£»¹ÊDzÉÓÃÀ©Õ¹³ö×ÓÀàµÄ·½Ê½°É£¬»¹ÊÇ¿´¿´ÐµÄÏîÄ¿¾­ÀíµÄ´¦ÀíÀ࣬ʾÀý´úÂëÈçÏ£º
/**
* ʵÏÖΪÏîÄ¿¾­ÀíÔö¼ÓÔ¤Ö§²îÂ÷ÑÓÃÉêÇë´¦ÀíµÄ¹¦ÄܵÄ×Ó¶ÔÏó£¬
* ÏÖÔÚµÄÏîÄ¿¾­Àí¼È¿ÉÒÔ´¦Àí¾Û²Í·ÑÓÃÉêÇ룬ÓÖ¿ÉÒÔ´¦ÀíÔ¤Ö§²îÂ÷ÑÓÃÉêÇë
*/
public class ProjectManager2 extends ProjectManager{
public Object handleRequest(RequestModel rm){
if(PreFeeRequestModel.FEE_TYPE.equals(rm.getType())){
//±íʾԤ֧²îÂ÷ÑÓÃÉêÇë
return myHandler(rm);
}else{
//ÆäËüµÄÈø¸ÀàÈ¥´¦Àí
return super.handleRequest(rm);
}
}
private Object myHandler(RequestModel rm) {
//ÏÈ°ÑͨÓõĶÔÏóÔìÐÍ»ØÀ´
PreFeeRequestModel frm = (PreFeeRequestModel)rm;
//ÏîÄ¿¾­ÀíµÄȨÏޱȽÏС£¬Ö»ÄÜÔÚ5000ÒÔÄÚ
if(frm.getFee() < 5000){
//¹¤×÷ÐèÒªÂͳͳͬÒâ
System.out.println("ÏîÄ¿¾­ÀíͬÒâ"+frm.getUser()
+"Ô¤Ö§²îÂ÷ÑÓÃ"+frm.getFee()+"ÔªµÄÇëÇó");
return true;
}else{
//³¬¹ý5000£¬¼ÌÐø´«µÝ¸ø¼¶±ð¸ü¸ßµÄÈË´¦Àí
if(this.successor!=null){
return this.successor.handleRequest(rm);
}
}
return false;
}
}
²¿Ãž­ÀíºÍ×ܾ­ÀíµÄ´¦ÀíÀàËÆ£¬¾Í²»È¥Ê¾ÀýÁË¡£
£¨8£©¿´¿´´ËʱµÄ²âÊÔ£¬Ê¾ÀýÈçÏ£º
public class Client {
public static void main(String[] args) {
//ÏÈÒª×é×°Ö°ÔðÁ´
Handler h1 = new GeneralManager2();
Handler h2 = new DepManager2();
Handler h3 = new ProjectManager2();
h3.setSuccessor(h2);
h2.setSuccessor(h1);

//¿ªÊ¼²âÊÔÉêÇë¾Û²Í·ÑÓÃ
FeeRequestModel frm = new FeeRequestModel();
frm.setFee(300);
frm.setUser("СÀî");
//µ÷Óô¦Àí
String ret1 = (String)h3.handleRequest(frm);
System.out.println("ret1="+ret1);

//ÖØÐÂÉèÖÃÉêÇë½ð¶î£¬ÔÙµ÷Óô¦Àí
frm.setFee(800);
h3.handleRequest(frm);
String ret2 = (String)h3.handleRequest(frm);
System.out.println("ret2="+ret2);

//ÖØÐÂÉèÖÃÉêÇë½ð¶î£¬ÔÙµ÷Óô¦Àí
frm.setFee(1600);
h3.handleRequest(frm);
String ret3 = (String)h3.handleRequest(frm);
System.out.println("ret3="+ret3);

//¿ªÊ¼²âÊÔÉêÇëÔ¤Ö§²îÂ÷ÑÓÃ
PreFeeRequestModel pfrm =
new PreFeeRequestModel();
pfrm.setFee(3000);
pfrm.setUser("СÕÅ");
//µ÷Óô¦Àí
h3.handleRequest(pfrm);
//ÖØÐÂÉèÖÃÉêÇë½ð¶î£¬ÔÙµ÷Óô¦Àí
pfrm.setFee(6000);
h3.handleRequest(pfrm);
//ÖØÐÂÉèÖÃÉêÇë½ð¶î£¬ÔÙµ÷Óô¦Àí
pfrm.setFee(36000);
h3.handleRequest(pfrm);
}
}
ÔËÐÐһϣ¬ÊÔÊÔ¿´£¬ÔËÐнá¹ûÈçÏ£º
ret1=ÏîÄ¿¾­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ300.0ÔªµÄÇëÇó
ret2=²¿Ãž­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ800.0ÔªµÄÇëÇó
ret3=×ܾ­ÀíͬÒâСÀî¾Û²Í·ÑÓÃ1600.0ÔªµÄÇëÇó
ÏîÄ¿¾­ÀíͬÒâСÕÅÔ¤Ö§²îÂ÷ÑÓÃ3000.0ÔªµÄÇëÇó
²¿Ãž­ÀíͬÒâСÕÅÔ¤Ö§²îÂ÷ÑÓÃ6000.0ÔªµÄÇëÇó
×ܾ­ÀíͬÒâСÕÅÔ¤Ö§²îÂ÷ÑÓÃ36000.0ÔªµÄÇëÇó
ºÃºÃÌå»áÒ»ÏÂÕâÖÖÉè¼Æ·½Ê½µÄºÃ´¦£¬Ï൱µÄͨÓúÍÁé»î£¬ÓÐÁËÐÂÒµÎñ£¬Ö»ÐèÒªÌí¼ÓʵÏÖй¦ÄܵĶÔÏó¾Í¿ÉÒÔÁË£¬µ«ÊÇ´øÀ´µÄȱÏݾÍÊÇ¿ÉÄÜ»áÔì³É¶ÔÏó²ã´Î¹ý¶à£¬»òÕß³öÏֽ϶àµÄϸÁ£¶ÈµÄ¶ÔÏ󣬼«¶ËÇé¿öÏ£¬Ã¿´Î¾ÍÀ©Õ¹Ò»¸ö·½·¨£¬»á³öÏÖ´óÁ¿Ö»´¦ÀíÒ»¸ö¹¦ÄܵÄϸÁ£¶È¶ÔÏó¡£
23.3.3 ¹¦ÄÜÁ´
ÔÚʵ¼Ê¿ª·¢ÖУ¬¾­³£»á³öÏÖÒ»¸ö°ÑÖ°ÔðÁ´ÉÔÉÔ±äÐεÄÓ÷¨¡£ÔÚ±ê×¼µÄÖ°ÔðÁ´ÖУ¬Ò»¸öÇëÇóÔÚÖ°ÔðÁ´Öд«µÝ£¬Ö»ÒªÓÐÒ»¸ö¶ÔÏó´¦ÀíÁËÕâ¸öÇëÇ󣬾ͻáÍ£Ö¹¡£
ÏÖÔÚÉÔÉÔ±äһϣ¬¸Ä³ÉÒ»¸öÇëÇóÔÚÖ°ÔðÁ´Öд«µÝ£¬Ã¿¸öÖ°Ôð¶ÔÏó¸ºÔð´¦ÀíÇëÇóµÄijһ·½ÃæµÄ¹¦ÄÜ£¬´¦ÀíÍê³Éºó£¬²»ÊÇÍ£Ö¹£¬¶øÊǼÌÐøÏòÏ´«µÝÇëÇ󣬵±ÇëÇóͨ¹ýºÜ¶àÖ°Ôð¶ÔÏó´¦Àí¹ýºó£¬¹¦ÄÜÒ²¾Í´¦ÀíÍêÁË£¬°ÑÕâÑùµÄÖ°ÔðÁ´³ÆΪ¹¦ÄÜÁ´¡£
¿¼ÂÇÕâÑùÒ»¸ö¹¦ÄÜ£¬ÔÚʵ¼ÊÓ¦Óÿª·¢ÖУ¬ÔÚ½øÐÐÒµÎñ´¦Àí֮ǰ£¬Í¨³£ÐèÒª½øÐÐȨÏÞ¼ì²é¡¢Í¨ÓÃÊý¾ÝУÑé¡¢Êý¾ÝÂß¼­Ð£ÑéµÈ´¦Àí£¬È»ºó²Å¿ªÊ¼ÕæÕýµÄÒµÎñÂß¼­ÊµÏÖ¡£¿ÉÒÔ°ÑÕâЩ¹¦ÄÜ·ÖÉ¢µ½Ò»¸ö¹¦ÄÜÁ´ÖУ¬ÕâÑù×öµÄÄ¿µÄÊÇʹ³ÌÐò½á¹¹¸ü¼ÓÁé»î£¬¶øÇÒ¸´ÓÃÐÔ»á¸üºÃ£¬±ÈÈçͨÓõÄȨÏÞ¼ì²é¾ÍÖ»ÐèÒª×öÒ»·Ý£¬È»ºó¾Í¿ÉÒÔÔÚ¶à¸ö¹¦ÄÜÁ´ÖÐʹÓÃÁË¡£
ÓÐЩÅóÓÑ¿´µ½ÕâÀ¿ÉÄÜ»áÏ룬Õâ²»ÊÇ¿ÉÒÔʹÓÃ×°ÊÎģʽÀ´ÊµÏÖÂð£¿Ã»´í£¬¿ÉÒÔʹÓÃ×°ÊÎģʽÀ´ÊµÏÖÕâÑùµÄ¹¦ÄÜ£¬µ«ÊÇÖ°ÔðÁ´»á¸üÁé»îһЩ£¬ÒòΪװÊÎģʽÊÇÔÚÒÑÓеŦÄÜÉÏÔö¼ÓÐµĹ¦ÄÜ£¬¶à¸ö×°ÊÎÆ÷Ö®¼ä»áÓÐÒ»¶¨µÄÁªÏµ£»¶øÖ°ÔðÁ´Ä£Ê½µÄ¸÷¸öÖ°Ôð¶ÔÏóʵÏֵŦÄÜ£¬Ï໥֮¼äÊÇûÓйØÁªµÄ£¬ÊÇ×Ô¼ºÊµÏÖÊôÓÚ×Ô¼º´¦ÀíµÄÄÇÒ»·Ý¹¦ÄÜ¡£
¿ÉÄÜÓÐЩÅóÓÑ»áÏëµ½ÕâºÜÀàËÆÓÚÔÚWebÓ¦Óÿª·¢ÖеĹýÂËÆ÷Filter£¬Ã»´í£¬¹ýÂËÆ÷Á´¾ÍÀàËÆÓÚÒ»¸ö¹¦ÄÜÁ´£¬Ã¿¸ö¹ýÂËÆ÷¸ºÔð×Ô¼ºµÄ´¦Àí£¬È»ºóת½»¸øÏÂÒ»¸ö¹ýÂËÆ÷£¬Ö±µ½°ÑËùÓеĹýÂËÆ÷¶¼×ßÍ꣬Ȼºó½øÈëµ½ServletÀïÃæ½øÐд¦Àí¡£×î³£¼ûµÄ¹ýÂËÆ÷¹¦ÄÜ£¬±ÈÈçȨÏÞ¼ì²é¡¢×Ö·û¼¯×ª»»µÈ£¬»ù±¾É϶¼ÊÇWebÓ¦ÓõıêÅä¡£
½ÓÏÂÀ´ÔÚʾÀýÖУ¬ÊµÏÖÕâÑùµÄ¹¦ÄÜ£ºÊµÏÖÉÌÆ·ÏúÊÛµÄÒµÎñ´¦Àí£¬ÔÚÕæÕý½øÐÐÏúÊÛµÄÒµÎñ´¦Àí֮ǰ£¬ÐèÒª¶Ô´«Èë´¦ÀíµÄÊý¾Ý£¬½øÐÐȨÏÞ¼ì²é¡¢Í¨ÓÃÊý¾Ý¼ì²éºÍÊý¾ÝÂß¼­¼ì²é£¬Ö»ÓÐÕâЩ¼ì²é¶¼ÄÜͨ¹ýµÄÇé¿öÏ£¬²Å˵Ã÷´«ÈëµÄÊý¾ÝÊÇÕýÈ·µÄ¡¢ÓÐЧµÄÊý¾Ý£¬²Å¿ÉÒÔ½øÐÐÕæÕýµÄÒµÎñ¹¦ÄÜ´¦Àí¡£
£¨1£©Ê×Ïȶ¨ÒåÒÑÓеÄÒµÎñ¹¦Äܺͷâ×°ÒµÎñÊý¾ÝµÄ¶ÔÏó£¬ÓÃÇ°Ãæ³öÏÖ¹ýµÄÄǸö±£´æÏúÊÛÐÅÏ¢µÄÒµÎñ£¬ÎªÁ˼òµ¥£¬¾Í²»È¥¶¨Òå½Ó¿ÚÁË£¬Ê¾Àý´úÂëÈçÏ£º
/**
/**
* ÉÌÆ·ÏúÊÛ¹ÜÀíÄ£¿éµÄÒµÎñ´¦Àí
*/
public class GoodsSaleEbo {
/**
* ±£´æÏúÊÛÐÅÏ¢£¬±¾À´ÏúÊÛÊý¾ÝÓ¦¸ÃÊǶàÌõ£¬Ì«Âé·³ÁË£¬ÎªÁËÑÝʾ£¬¼òµ¥µã
* @param user ²Ù×÷ÈËÔ±
* @param customer ¿Í»§
* @param saleModel ÏúÊÛÊý¾Ý
* @return ÊÇ·ñ±£´æ³É¹¦
*/
public boolean sale(String user,String customer
,SaleModel saleModel){
//Èç¹ûÈ«²¿ÔÚÕâÀï´¦Àí£¬»ù±¾µÄ˳ÐòÊÇ
//1£ºÈ¨ÏÞ¼ì²é
//2£ºÍ¨ÓÃÊý¾Ý¼ì²é£¨Õâ¸öÒ²¿ÉÄÜÔÚ±íÏÖ²ãÒѾ­×÷¹ýÁË£©
//3£ºÊý¾ÝÂß¼­Ð£Ñé

//4£ºÕæÕýµÄÒµÎñ´¦Àí

//µ«ÊÇÏÖÔÚͨ¹ý¹¦ÄÜÁ´À´×ö£¬ÕâÀï¾ÍÖ÷Òª¸ºÔð¹¹½¨Á´
//ÔÝʱ»¹Ã»Óй¦ÄÜÁ´£¬µÈʵÏÖºÃÁ˸÷¸ö´¦Àí¶ÔÏóÔÙ»ØÀ´Ìí¼Ó
return true;
}
}
¶ÔÓ¦µÄ·â×°ÏúÊÛÊý¾ÝµÄ¶ÔÏó£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ·â×°ÏúÊÛµ¥µÄÊý¾Ý£¬¼òµ¥µÄʾÒâÒ»ÏÂ
*/
public class SaleModel {
/**
* ÏúÊÛµÄÉÌÆ·
*/
private String goods;
/**
* ÏúÊÛµÄÊýÁ¿
*/
private int saleNum;
public String getGoods() {
return goods;
}
public void setGoods(String goods) {
this.goods = goods;
}
public int getSaleNum() {
return saleNum;
}
public void setSaleNum(int saleNum) {
this.saleNum = saleNum;
}
public String toString(){
return "ÉÌÆ·Ãû³Æ="+goods+",ÏúÊÛÊýÁ¿="+saleNum;
}
}
£¨2£©¶¨ÒåÒ»¸öÓÃÀ´´¦Àí±£´æÏúÊÛÊý¾Ý¹¦ÄܵÄÖ°Ôð¶ÔÏóµÄ½Ó¿Ú£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ¶¨ÒåÖ°Ôð¶ÔÏóµÄ½Ó¿Ú
*/
public abstract class SaleHandler {
/**
* ³ÖÓÐÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
*/
protected SaleHandler successor = null;
/**
* ÉèÖÃÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
* @param successor ÏÂÒ»¸ö´¦ÀíÇëÇóµÄ¶ÔÏó
*/
public void setSuccessor(SaleHandler successor){
this.successor = successor;
}
/**
* ´¦Àí±£´æÏúÊÛÐÅÏ¢µÄÇëÇó
* @param user ²Ù×÷ÈËÔ±
* @param customer ¿Í»§
* @param saleModel ÏúÊÛÊý¾Ý
* @return ÊÇ·ñ´¦Àí³É¹¦
*/
public abstract boolean sale(String user,String customer,
SaleModel saleModel);
}
£¨3£©ÊµÏÖ¸÷¸öÖ°Ôð´¦Àí¶ÔÏó£¬Ã¿¸öÖ°Ôð¶ÔÏó¸ºÔðÇëÇóµÄÒ»¸ö·½ÃæµÄ´¦Àí£¬°ÑÕâЩְÔð¶ÔÏó¶¼×ßÍêÁË£¬¹¦ÄÜÒ²¾ÍʵÏÖÍêÁË¡£Ïȶ¨Òå´¦Àí°²È«¼ì²éµÄÖ°Ôð¶ÔÏó£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ½øÐÐȨÏÞ¼ì²éµÄÖ°Ôð¶ÔÏó
*/
public class SaleSecurityCheck extends SaleHandler{
public boolean sale(String user, String customer
, SaleModel saleModel) {
//½øÐÐȨÏÞ¼ì²é£¬¼òµ¥µã£¬¾ÍСÀîÄÜͨ¹ý
if("СÀî".equals(user)){
return this.successor.sale(user, customer, saleModel);
}else{
System.out.println("¶Ô²»Æð"+user
+"£¬ÄãûÓб£´æÏúÊÛÐÅÏ¢µÄȨÏÞ");
return false;
}
}
}
½ÓÏÂÀ´¶¨ÒåͨÓÃÊý¾Ý¼ì²éµÄÖ°Ôð¶ÔÏó£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ½øÐÐÊý¾ÝͨÓüì²éµÄÖ°Ôð¶ÔÏó
*/
public class SaleDataCheck extends SaleHandler{
public boolean sale(String user, String customer
, SaleModel saleModel) {
//½øÐÐÊý¾ÝͨÓüì²é£¬ÉÔÂé·³µã£¬Ã¿¸öÊý¾Ý¶¼Òª¼ì²â
if(user==null || user.trim().length()==0){
System.out.println("ÉêÇëÈ˲»ÄÜΪ¿Õ");
return false;
}
if(customer==null || customer.trim().length()==0){
System.out.println("¿Í»§²»ÄÜΪ¿Õ");
return false;
}
if(saleModel==null ){
System.out.println("ÏúÊÛÉÌÆ·µÄÊý¾Ý²»ÄÜΪ¿Õ");
return false;
}
if(saleModel.getGoods() == null
|| saleModel.getGoods().trim().length()==0){
System.out.println("ÏúÊÛµÄÉÌÆ·²»ÄÜΪ¿Õ");
return false;
}
if(saleModel.getSaleNum()==0){
System.out.println("ÏúÊÛÉÌÆ·µÄÊýÁ¿²»ÄÜΪ0");
return false;
}
//Èç¹ûͨ¹ýÁËÉÏÃæµÄ¼ì²â£¬ÄǾÍÏòϼÌÐøÖ´ÐÐ
return this.successor.sale(user, customer, saleModel);
}
}
ÔÙ¿´¿´½øÐÐÊý¾ÝÂß¼­¼ì²éµÄÖ°Ôð¶ÔÏó£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ½øÐÐÊý¾ÝÂß¼­¼ì²éµÄÖ°Ôð¶ÔÏó
*/
public class SaleLogicCheck extends SaleHandler{
public boolean sale(String user, String customer
, SaleModel saleModel) {
//½øÐÐÊý¾ÝµÄÂß¼­¼ì²é£¬±ÈÈç¼ì²éIDµÄΨһÐÔ£¬Ö÷Íâ¼üµÄ¶ÔÓ¦¹ØϵµÈµÈ
//ÕâÀïÓ¦¸Ã¼ì²éÕâÖÖÖ÷Íâ¼üµÄ¶ÔÓ¦¹Øϵ£¬±ÈÈçÏúÊÛÉÌÆ·ÊÇ·ñ´æÔÚ
//ΪÁËÑÝʾ¼òµ¥£¬Ö±½Óͨ¹ý°É

//Èç¹ûͨ¹ýÁËÉÏÃæµÄ¼ì²â£¬ÄǾÍÏòϼÌÐøÖ´ÐÐ
return this.successor.sale(user, customer, saleModel);
}
}
×îºóÊÇÕæÕýµÄÒµÎñ´¦ÀíµÄÖ°Ôð¶ÔÏó£¬Ê¾Àý´úÂëÈçÏ£º
/**
* ÕæÕý´¦ÀíÏúÊÛµÄÒµÎñ¹¦ÄܵÄÖ°Ôð¶ÔÏó
*/
public class SaleMgr extends SaleHandler{
public boolean sale(String user, String customer
, SaleModel saleModel) {
//½øÐÐÕæÕýµÄÒµÎñÂß¼­´¦Àí
System.out.println(user+"±£´æÁË"+customer
+"¹ºÂò "+saleModel+" µÄÏúÊÛÊý¾Ý");
return true;
}
}
£¨4£©ÊµÏÖºÃÁ˸÷¸öÖ°Ôð¶ÔÏó´¦Àí£¬»Ø¹ýÍ·À´¿´¿´ÈçºÎ¾ßÌåʵÏÖÒµÎñ´¦Àí£¬ÔÚÒµÎñ¶ÔÏóÀïÃæ½øÐй¦ÄÜÁ´µÄ×éºÏ£¬Ê¾Àý´úÂëÈçÏ£º
public class GoodsSaleEbo {
/**
* ±£´æÏúÊÛÐÅÏ¢£¬±¾À´ÏúÊÛÊý¾ÝÓ¦¸ÃÊǶàÌõ£¬Ì«Âé·³ÁË£¬ÎªÁËÑÝʾ£¬¼òµ¥µã
* @param user ²Ù×÷ÈËÔ±
* @param customer ¿Í»§
* @param saleModel ÏúÊÛÊý¾Ý
* @return ÊÇ·ñ±£´æ³É¹¦
*/
public boolean sale(String user,String customer
,SaleModel saleModel){
//Èç¹ûÈ«²¿ÔÚÕâÀï´¦Àí£¬»ù±¾µÄ˳ÐòÊÇ
//1£ºÈ¨ÏÞ¼ì²é
//2£ºÍ¨ÓÃÊý¾Ý¼ì²é£¨Õâ¸öÒ²¿ÉÄÜÔÚ±íÏÖ²ãÒѾ­×÷¹ýÁË£©
//3£ºÊý¾ÝÂß¼­Ð£Ñé

//4£ºÕæÕýµÄÒµÎñ´¦Àí

//µ«ÊÇÏÖÔÚͨ¹ý¹¦ÄÜÁ´À´×ö£¬ÕâÀï¾ÍÖ÷Òª¸ºÔð¹¹½¨Á´
SaleSecurityCheck ssc = new SaleSecurityCheck();
SaleDataCheck sdc = new SaleDataCheck();
SaleLogicCheck slc = new SaleLogicCheck();
SaleMgr sd = new SaleMgr();
ssc.setSuccessor(sdc);
sdc.setSuccessor(slc);
slc.setSuccessor(sd);
//ÏòÁ´ÉϵĵÚÒ»¸ö¶ÔÏó·¢³ö´¦ÀíµÄÇëÇó
return ssc.sale(user, customer, saleModel);
}
}
£¨5£©Ð´¸ö¿Í»§¶Ë£¬µ÷ÓÃÒµÎñ¶ÔÏ󣬲âÊÔһϿ´¿´£¬Ê¾Àý´úÂëÈçÏ£º
public class Client {
public static void main(String[] args) {
//´´½¨ÒµÎñ¶ÔÏó
GoodsSaleEbo ebo = new GoodsSaleEbo();
//×¼±¸²âÊÔÊý¾Ý
SaleModel saleModel = new SaleModel();
saleModel.setGoods("ÕÅѧÓÑ»³¾É¾­µä");
saleModel.setSaleNum(10);

//µ÷ÓÃÒµÎñ¹¦ÄÜ
ebo.sale("СÀî", "ÕÅÈý", saleModel);
ebo.sale("СÕÅ", "ÀîËÄ", saleModel);
}
}
ÔËÐÐһϣ¬ÊÔÊÔ¿´£¬ÔËÐнá¹ûÈçÏ£º
СÀî±£´æÁËÕÅÈý¹ºÂò ÉÌÆ·Ãû³Æ=ÕÅѧÓÑ»³¾É¾­µä,ÏúÊÛÊýÁ¿=10 µÄÏúÊÛÊý¾Ý
¶Ô²»ÆðСÕÅ£¬ÄãûÓб£´æÏúÊÛÐÅÏ¢µÄȨÏÞ
Ä㻹¿ÉÒԸıä²âÊÔµÄÊý¾Ý£¬¿´¿´Ð§¹û£¬ºÃºÃÌå»áÕâÖÖÉè¼ÆµÄÁé»îÐÔ£¬ºÜ¶à¿ò¼Ü¼¶¹¦ÄܵÄÉè¼Æ¶¼ÓõÃÉÏ¡£
23.3.4 Ö°ÔðÁ´Ä£Ê½µÄÓÅȱµã
l ÇëÇóÕߺͽÓÊÕÕßËÉÉ¢ñîºÏ
ÔÚÖ°ÔðÁ´Ä£Ê½ÀïÃ棬ÇëÇóÕß²¢²»ÖªµÀ½ÓÊÕÕßÊÇË­£¬Ò²²»ÖªµÀ¾ßÌåÈçºÎ´¦Àí£¬ÇëÇóÕßÖ»ÊǸºÔðÏòÖ°ÔðÁ´·¢³öÇëÇó¾Í¿ÉÒÔÁË¡£¶øÿ¸öÖ°Ôð¶ÔÏóÒ²²»ÓùÜÇëÇóÕß»òÕßÊÇÆäËüµÄÖ°Ôð¶ÔÏó£¬Ö»¸ºÔð´¦Àí×Ô¼ºµÄ²¿·Ö£¬ÆäËüµÄ¾Í½»ÓÉÆäËüµÄÖ°Ôð¶ÔÏóÈ¥´¦Àí¡£Ò²¾ÍÊÇ˵£¬ÇëÇóÕߺͽÓÊÕÕßÊÇÍêÈ«½âñîµÄ¡£
l ¶¯Ì¬×éºÏÖ°Ôð
Ö°ÔðÁ´Ä£Ê½»á°Ñ¹¦ÄÜ´¦Àí·ÖÉ¢µ½µ¥¶ÀµÄÖ°Ôð¶ÔÏóÀïÃ棬ȻºóÔÚʹÓõÄʱºò£¬¿ÉÒÔ¶¯Ì¬×éºÏÖ°ÔðÐγÉÖ°ÔðÁ´£¬´Ó¶ø¿ÉÒÔÁé»îµÄ¸ø¶ÔÏó·ÖÅäÖ°Ôð£¬Ò²¿ÉÒÔÁé»îµÄʵÏֺ͸ıä¶ÔÏóµÄÖ°Ôð¡£
l ²úÉúºÜ¶àϸÁ£¶È¶ÔÏó
Ö°ÔðÁ´Ä£Ê½»á°Ñ¹¦ÄÜ´¦Àí·ÖÉ¢µ½µ¥¶ÀµÄÖ°Ôð¶ÔÏóÀïÃ棬Ҳ¾ÍÊÇÿ¸öÖ°Ôð¶ÔÏóÖ»ÊÇ´¦ÀíÒ»¸ö·½ÃæµÄ¹¦ÄÜ£¬Òª°ÑÕû¸öÒµÎñ´¦ÀíÍ꣬ÐèÒª´óÁ¿µÄÖ°Ôð¶ÔÏóµÄ×éºÏ£¬Õâ»á²úÉú´óÁ¿µÄϸÁ£¶ÈÖ°Ôð¶ÔÏó¡£
l ²»Ò»¶¨Äܱ»´¦Àí
Ö°ÔðÁ´Ä£Ê½µÄÿ¸öÖ°Ôð¶ÔÏóÖ»¸ºÔð×Ô¼º´¦ÀíµÄÄÇÒ»²¿·Ö£¬Òò´Ë¿ÉÄÜ»á³öÏÖij¸öÇëÇ󣬰ÑÕû¸öÁ´´«µÝÍêÁË£¬¶¼Ã»ÓÐÖ°Ôð¶ÔÏó´¦ÀíËü¡£Õâ¾ÍÐèÒªÔÚʹÓÃÖ°ÔðÁ´Ä£Ê½µÄʱºò×¢Ò⣬ÐèÒªÌṩĬÈϵĴ¦Àí£¬²¢ÇÒ×¢Òâ¹¹½¨µÄÁ´µÄÓÐЧÐÔ¡£
23.3.5 ˼¿¼Ö°ÔðÁ´Ä£Ê½
1£ºÖ°ÔðÁ´Ä£Ê½µÄ±¾ÖÊ
Ö°ÔðÁ´Ä£Ê½µÄ±¾ÖÊ£º·ÖÀëÖ°Ô𣬶¯Ì¬×éºÏ¡£
·ÖÀëÖ°ÔðÊÇÇ°ÌᣬֻÓÐÏȰѸ´ÔÓ¹¦ÄÜ·Ö¿ª£¬²ð·Ö³ÉºÜ¶àµÄ²½ÖèºÍСµÄ¹¦ÄÜ´¦Àí£¬È»ºó²ÅÄܺÏÀí¹æ»®ºÍ¶¨ÒåÖ°ÔðÀ࣬¿ÉÒÔÓкܶàµÄÖ°ÔðÀàÀ´¸ºÔð´¦Àíijһ¸ö¹¦ÄÜ£¬ÈÃÿ¸öÖ°ÔðÀฺÔð´¦Àí¹¦ÄܵÄijһ¸ö·½Ã棬ÔÚÔËÐÐÆÚ¼ä½øÐж¯Ì¬×éºÏ£¬ÐγÉÒ»¸ö´¦ÀíµÄÁ´£¬°ÑÕâ¸öÁ´ÔËÐÐÍ꣬ÄÇô¹¦ÄÜÒ²¾Í´¦ÀíÍêÁË¡£
¶¯Ì¬×éºÏ²ÅÊÇÖ°ÔðÁ´Ä£Ê½µÄ¾«»ªËùÔÚ£¬ÒòΪҪʵÏÖÇëÇó¶ÔÏóºÍ´¦Àí¶ÔÏóµÄ½âñÇëÇó¶ÔÏó²»ÖªµÀË­²ÅÊÇÕæÕýµÄ´¦Àí¶ÔÏó£¬Òò´ËÒª¶¯Ì¬µÄ°Ñ¿ÉÄܵĴ¦Àí¶ÔÏó×éºÏÆðÀ´£¬ÓÉÓÚ×éºÏµÄ·½Ê½ÊǶ¯Ì¬µÄ£¬Õâ¾ÍÒâζ×Å¿ÉÒԺܷ½±ãµÄÐ޸ĺÍÌí¼ÓеĴ¦Àí¶ÔÏ󣬴ӶøÈÃϵͳ¸ü¼ÓÁé»îºÍ¾ßÓиüºÃµÄÀ©Õ¹ÐÔ¡£
µ±È»Õâô×ö»¹»áÓÐÒ»¸öDZÔÚµÄÓŵ㣬¾ÍÊÇ¿ÉÒÔÔöÇ¿Ö°Ôð¹¦Äܵĸ´ÓÃÐÔ¡£Èç¹ûÖ°Ôð¹¦ÄÜÊǺܶàµØ·½¶¼¿ÉÒÔʹÓõĹ«¹²¹¦ÄÜ£¬ÄÇôËü¿ÉÒÔÓ¦ÓÃÔÚ¶à¸öÖ°ÔðÁ´Öи´Óá£
2£ººÎʱѡÓÃÖ°ÔðÁ´Ä£Ê½
½¨ÒéÔÚÈçÏÂÇé¿öÖУ¬Ñ¡ÓÃÖ°ÔðÁ´Ä£Ê½£º
Èç¹ûÓжà¸ö¶ÔÏó¿ÉÒÔ´¦Àíͬһ¸öÇëÇ󣬵«ÊǾßÌåÓÉÄĸö¶ÔÏóÀ´´¦Àí¸ÃÇëÇó£¬ÊÇÔËÐÐʱ¿Ì¶¯Ì¬È·¶¨µÄ¡£ÕâÖÖÇé¿ö¿ÉÒÔʹÓÃÖ°ÔðÁ´Ä£Ê½£¬°Ñ´¦ÀíÇëÇóµÄ¶ÔÏóʵÏÖ³ÉΪְÔð¶ÔÏó£¬È»ºó°ÑËüÃǹ¹³ÉÒ»¸öÖ°ÔðÁ´£¬µ±ÇëÇóÔÚÕâ¸öÁ´Öд«µÝµÄʱºò£¬¾ßÌåÓÉÄĸöÖ°Ôð¶ÔÏóÀ´´¦Àí£¬»áÔÚÔËÐÐʱ¶¯Ì¬Åжϡ£
Èç¹ûÄãÏëÔÚ²»Ã÷È·Ö¸¶¨½ÓÊÕÕßµÄÇé¿öÏ£¬Ïò¶à¸ö¶ÔÏóÖеÄÒ»¸öÌá½»Ò»¸öÇëÇóµÄ»°£¬¿ÉÒÔʹÓÃÖ°ÔðÁ´Ä£Ê½£¬Ö°ÔðÁ´Ä£Ê½ÊµÏÖÁËÇëÇóÕߺͽÓÊÕÕßÖ®¼äµÄ½âñÇëÇóÕß²»ÐèÒªÖªµÀ¾¿¾¹ÊÇÄÄÒ»¸ö½ÓÊÕÕ߶ÔÏóÀ´´¦ÀíÁËÇëÇó¡£
Èç¹ûÏëÒª¶¯Ì¬Ö¸¶¨´¦ÀíÒ»¸öÇëÇóµÄ¶ÔÏ󼯺ϣ¬¿ÉÒÔʹÓÃÖ°ÔðÁ´Ä£Ê½£¬Ö°ÔðÁ´Ä£Ê½Äܶ¯Ì¬µÄ¹¹½¨Ö°ÔðÁ´£¬Ò²¾ÍÊǶ¯Ì¬µÄÀ´¾ö¶¨µ½µ×ÄÄЩְÔð¶ÔÏóÀ´²ÎÓëµ½´¦ÀíÇëÇóÖÐÀ´£¬Ï൱ÓÚÊǶ¯Ì¬Ö¸¶¨ÁË´¦ÀíÒ»¸öÇëÇóµÄÖ°Ôð¶ÔÏ󼯺ϡ£
23.3.6 Ïà¹Øģʽ
l Ö°ÔðÁ´Ä£Ê½ºÍ×éºÏģʽ
ÕâÁ½¸öģʽ¿ÉÒÔ×éºÏʹÓá£
¿ÉÒÔ°ÑÖ°Ôð¶ÔÏóͨ¹ý×éºÏģʽÀ´×éºÏ£¬ÕâÑù¿ÉÒÔͨ¹ý×éºÏ¶ÔÏó×Ô¶¯µÝ¹éµÄÏòÉϵ÷Óã¬Óɸ¸×é¼þ×÷Ϊ×Ó×é¼þµÄºó¼Ì£¬´Ó¶øÐγÉÁ´¡£
ÕâÒ²¾ÍÊÇÇ°ÃæÌáµ½¹ýµÄʹÓÃÍⲿÒÑÓеÄÁ´½Ó£¬ÕâÖÖÇé¿öÔÚ¿Í»§¶ËʹÓõÄʱºò£¬¾Í²»ÓÃÔÙ¹¹ÔìÁ´ÁË£¬ËäÈ»²»¹¹ÔìÁ´£¬µ«ÊÇÐèÒª¹¹Ôì×éºÏ¶ÔÏóÊ÷£¬ÊÇÒ»ÑùµÄ¡£
l Ö°ÔðÁ´Ä£Ê½ºÍ×°ÊÎģʽ
ÕâÁ½¸öģʽÏàËÆ£¬´Óij¸ö½Ç¶È½²£¬¿ÉÒÔÏ໥ģÄâʵÏÖ¶Ô·½µÄ¹¦ÄÜ¡£
×°ÊÎģʽÄܹ»¶¯Ì¬µÄ¸ø±»×°ÊζÔÏóÌí¼Ó¹¦ÄÜ£¬ÒªÇó×°ÊÎÆ÷¶ÔÏóºÍ±»×°ÊεĶÔÏóʵÏÖÏàͬµÄ½Ó¿Ú¡£¶øÖ°ÔðÁ´Ä£Ê½¿ÉÒÔʵÏÖ¶¯Ì¬µÄÖ°Ôð×éºÏ£¬±ê×¼µÄ¹¦ÄÜÊÇÓÐÒ»¸ö¶ÔÏó´¦Àí¾Í½áÊø£¬µ«ÊÇÈç¹û´¦ÀíÍê±¾Ö°Ôð²»¼±ÓÚ½áÊø£¬¶øÊǼÌÐøÏòÏ´«µÝÇëÇó£¬ÄÇô¹¦ÄܾͺÍ×°ÊÎģʽµÄ¹¦Äܲ¶àÁË£¬Ã¿¸öÖ°Ôð¶ÔÏó¾ÍÀàËÆÓÚ×°ÊÎÆ÷£¬¿ÉÒÔʵÏÖijÖÖ¹¦ÄÜ¡£
¶øÇÒÁ½¸öģʽµÄ±¾ÖÊÒ²ÀàËÆ£¬¶¼ÐèÒªÔÚÔËÐÐÆڼ䶯̬×éºÏ£¬×°ÊÎģʽÊǶ¯Ì¬×éºÏ×°ÊÎÆ÷£¬¶øÖ°ÔðÁ´ÊǶ¯Ì¬×éºÏ´¦ÀíÇëÇóµÄÖ°Ôð¶ÔÏóµÄÁ´¡£
µ«ÊÇ´Ó±ê×¼µÄÉè¼ÆģʽÉÏÀ´½²£¬ÕâÁ½¸öģʽ»¹ÊÇÓнϴóÇø±ðµÄ£¬ÕâµãҪעÒâ¡£Ê×ÏÈÊÇÄ¿µÄ²»Í¬£¬×°ÊÎģʽÊÇҪʵÏÖ͸Ã÷µÄΪ¶ÔÏóÌí¼Ó¹¦ÄÜ£¬¶øÖ°ÔðÁ´Ä£Ê½ÊÇҪʵÏÖ·¢ËÍÕߺͽÓÊÕÕß½âñÁíÍâÒ»¸ö£¬×°ÊÎģʽÊÇÎÞÏ޵ݹéµ÷Óõģ¬¿ÉÒÔÓÐÈÎÒâ¶à¸ö¶ÔÏóÀ´×°Êι¦ÄÜ£¬µ«ÊÇÖ°ÔðÁ´Ä£Ê½ÊÇÓÐÒ»¸ö´¦Àí¾Í½áÊø¡£
l Ö°ÔðÁ´Ä£Ê½ºÍ²ßÂÔģʽ
ÕâÁ½¸öģʽ¿ÉÒÔ×éºÏʹÓá£
ÕâÁ½¸öģʽÓÐÏàËÆÖ®´¦£¬Èç¹û°ÑÖ°ÔðÁ´¼ò»¯µ½Ö±½Ó¾ÍÄÜÑ¡Ôñµ½ÏàÓ¦µÄ´¦Àí¶ÔÏó£¬ÄǾ͸ú²ßÂÔģʽµÄÑ¡Ôñ²î²»¶à£¬Òò´Ë¿ÉÒÔÓÃÖ°ÔðÁ´À´Ä£Äâ²ßÂÔģʽµÄ¹¦ÄÜ¡£Ö»ÊÇÈç¹û°ÑÖ°ÔðÁ´¼ò»¯µ½Õâ¸öµØ²½£¬Ò²¾Í²»´æÔÚÁ´ÁË£¬Ò²¾Í³Æ²»ÉÏÊÇÖ°ÔðÁ´ÁË¡£
Á½¸öģʽ¿ÉÒÔ×éºÏʹÓ㬿ÉÒÔÔÚÖ°ÔðÁ´Ä£Ê½µÄij¸öÖ°ÔðµÄʵÏÖµÄʱºò£¬Ê¹ÓòßÂÔģʽÀ´Ñ¡Ôñ¾ßÌåµÄʵÏÖ£¬Í¬ÑùÒ²¿ÉÒÔÔÚ²ßÂÔģʽµÄij¸ö²ßÂÔʵÏÖÀïÃ棬ʹÓÃÖ°ÔðÁ´Ä£Ê½À´ÊµÏÖ¹¦ÄÜ´¦Àí¡£
ͬÀíÖ°ÔðÁ´Ä£Ê½Ò²¿ÉÒÔºÍ״̬ģʽ×éºÏʹÓá£
¸ü¶àÄÚÈÝËÑËØ¡°¸ú×ÅccѧÉè¼Æ¡±
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 2 ÌõÆÀÂÛ

  1. honglianqxw123 ÓÚ 2014-04-28 10:34:23·¢±í:

    ºÃ¶«Î÷£¬¾ÍÊÇÌ«ÊäÈëÁË¡£

  2. chentufeiyang ÓÚ 2013-12-30 18:24:44·¢±í:

    ѧϰlinux