ÕýÔÚÔĶÁ£º×´Ì¬Ä£Ê½Ö®ÐǼÊÓ¦ÓÃ״̬ģʽ֮ÐǼÊÓ¦ÓÃ

2004-02-17 10:08 ³ö´¦£ºCSDN ×÷Õߣºasklxf ÔðÈα༭£ºlinjixiong

×îºó£¬¶¨Òå»úǹ±øÀàMarine£¬Ã¿¸öMarineµÄʵÀý´ú±íÒ»¸ö»úǹ±ø£º

public class Marine {
    // ±£³ÖÒ»¸ö״̬ÀàµÄʵÀý£º
    private State state = new NormalState();
 
    // Ϊ»úǹ±øÉèÖÃ״̬£º
    public void setState(State state) {
       this.state = state;
    }
 
    // fire()·½·¨£¬Êµ¼Êµ÷ÓõÄÊÇstate±äÁ¿µÄfire()·½·¨£º
    public void fire() {
       state.fire();
    }
}

×îºóÎÒÃÇ¿´¿´ÈçºÎÔÚ¿Í»§¶Ë¿ØÖÆÒ»¸ö»úǹ±øµÄ״̬£º

public static void main(String[] args) {
    // ´´½¨Ò»¸ö»úǹ±øµÄʵÀý£º
    Marine marine = new Marine();
    // µ÷ÓÃfire()·½·¨£º
    marine.fire();
    // ÉèÖÃΪÐË·Ü״̬£º
    marine.setState(new ExcitedState());
    // ÔÙµ÷ÓÃfire()·½·¨£º
    marine.fire();
}

¶Ôͬһ¸öMarine¶ÔÏóµ÷ÓÃÁ½´Îfire()·½·¨£¬ÆÁÄ»Êä³öΪ£º

ÆÕͨ״̬ÿÃ뿪ǹ1´Î¡£
ÐË·Ü״̬ÿÃ뿪ǹ2´Î¡£

¿É¼û»úǹ±øÔÚÁ½ÖÖ״̬ϵÄͬһ¸öfire()·½·¨Óв»Í¬µÄÐÐΪ¡£

ʹÓÃ״̬ģʽµÄºÃ´¦ÊÇÿ¸ö״̬±»·â×°µ½Ò»¸ö¶ÀÁ¢µÄÀàÖУ¬ÕâЩÀà¿ÉÒÔ¶ÀÁ¢±ä»¯£¬¶øÖ÷¶ÔÏóÖÐûÓз±ËöµÄswich-caseÓï¾ä£¬²¢ÇÒÌí¼ÓеÄ״̬·Ç³£ÈÝÒ×£¬Ö»ÐèÒª´ÓStateÅÉÉúÒ»¸öÐÂÀ༴¿É¡£

 

 

²ì¿´ÆÀÂÛÏêϸÄÚÈÝ ÎÒÒª·¢±íÆÀÂÛ
×÷Õß±ÊÃû¼ò¶ÌÄÚÈÝ ·¢±íʱ¼ä
:
¼üÅÌÒ²ÄÜ·­Ò³£¬ÊÔÊÔ¡°¡û ¡ú¡±¼ü

¹Ø×¢ÎÒÃÇ

×îÐÂ×ÊѶÀëÏßËæʱ¿´ ÁÄÌìͲÛÓ®½±Æ·