ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Behavioralģʽ֮Mementoģʽ
2015-11-21 00:58:45 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1´Î
Tags£ºBehavioral ģʽ Memento

1.Òâͼ

ÔÚ²»ÆÆ»µ·â×°ÐÔµÄǰÌáÏ£¬²¶»ñÒ»¸ö¶ÔÏóµÄÄÚ²¿×´Ì¬£¬²¢ÔڸöÔÏóÖ®Íâ±£´æÕâ¸ö״̬£¬ÕâÑùÒÔºó¾Í¿É½«¸Ã¶ÔÏó»Ö¸´µ½Ô­Ïȱ£´æµÄ״̬¡£

2.±ðÃû

Token

3.¶¯»ú

ÓÐʱºòÓбØÒª¼Ç¼һ¸ö¶ÔÏóµÄÄÚ²¿×´Ì¬¡£ÎªÁËÔÊÐíÓû§È¡Ïû²»È·¶¨µÄ²Ù×÷»ò´Ó´íÎóÖлָ´¹ýÀ´£¬ÐèҪʵÏÖ¼ì²éµãºÍÈ¡Ïû»úÖÆ£¬¶øÒªÊµÏÖÕâЩ»úÖÆ£¬Äã±ØÐëÊÂÏȽ«×´Ì¬ÐÅÏ¢±£´æÔÚij´¦£¬ÕâÑù²ÅÄÜÊǶÔÏó»Ö¸´µ½ËûÃÇÏÈǰµÄ״̬¡£

4.ÊÊÓÃÐÔ

ÒÔÏÂÇé¿öʹÓÃMementoģʽ£º

±ØÐè±£´æÒ»¸ö¶ÔÏóÔÚijһʱ¿ÌµÄ£¨²¿·Ö£©×´Ì¬£¬ÕâÑùÒÔºóÐèҪʱËüÄָܻ´µ½ÏÈǰµÄ״̬¡£ Èç¹ûÒ»¸öÓýӿÚÀ´ÈÃÆäËü¶ÔÏóÖ±½ÓµÃµ½ÕâЩ״̬£¬½«»á±©Â¶¶ÔÏóµÄʵÏÖϸ½Ú²¢ÆÆ»µ¶ÔÏóµÄ·â×°ÐÔ¡£

5.½á¹¹

Ö÷ҪĿµÄÊDZ£´æÒ»¸ö¶ÔÏóµÄij¸ö״̬£¬ÒÔ±ãÔÚÊʵ±µÄʱºò»Ö¸´¶ÔÏ󣬸öÈ˾õµÃ½Ð±¸·Ýģʽ¸üÐÎÏóЩ£¬Í¨Ë׵Ľ²Ï£º¼ÙÉèÓÐԭʼÀàA£¬AÖÐÓи÷ÖÖÊôÐÔ£¬A¿ÉÒÔ¾ö¶¨ÐèÒª±¸·ÝµÄÊôÐÔ£¬±¸Íü¼ÀàBÊÇÓÃÀ´´æ´¢AµÄһЩÄÚ²¿×´Ì¬£¬ÀàCÄØ£¬¾ÍÊÇÒ»¸öÓÃÀ´´æ´¢±¸Íü¼µÄ£¬ÇÒÖ»ÄÜ´æ´¢£¬²»ÄÜÐ޸ĵȲÙ×÷¡£×ö¸öͼÀ´·ÖÎöһϣº
Mementoģʽ

6.´úÂëʾÀý

OriginalÀàÊÇԭʼÀ࣬ÀïÃæÓÐÐèÒª±£´æµÄÊôÐÔvalue¼°´´½¨Ò»¸ö±¸Íü¼À࣬ÓÃÀ´±£´ævalueÖµ¡£MementoÀàÊDZ¸Íü¼À࣬StorageÀàÊÇ´æ´¢±¸Íü¼µÄÀ࣬³ÖÓÐMementoÀàµÄʵÀý£¬¸ÃģʽºÜºÃÀí½â¡£Ö±½Ó¿´Ô´Â룺
ʵÏÖ´úÂ룺
Êý¾Ý½á¹¹£º

public class Original {

    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public Original(String value) {
        this.value = value;
    }

    public Memento createMemento(){
        return new Memento(value);
    }

    public void restoreMemento(Memento memento){
        this.value = memento.getValue();
    }
}

ʵÏÖ:

public class Memento {

    private String value;

    public Memento(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}


public class Storage {

    private Memento memento;

    public Storage(Memento memento) {
        this.memento = memento;
    }

    public Memento getMemento() {
        return memento;
    }

    public void setMemento(Memento memento) {
        this.memento = memento;
    }
}
²âÊÔÀࣺ

public class Test {

public static void main(String[] args) {

    // ´´½¨Ô­Ê¼Àà
    Original origi = new Original(egg);

    // ´´½¨±¸Íü¼
    Storage storage = new Storage(origi.createMemento());

    // ÐÞ¸ÄԭʼÀàµÄ״̬
    System.out.println(³õʼ»¯×´Ì¬Îª£º + origi.getValue());
    origi.setValue(niu);
    System.out.println(Ð޸ĺóµÄ״̬Ϊ£º + origi.getValue());

    // »Ø¸´Ô­Ê¼ÀàµÄ״̬
    origi.restoreMemento(storage.getMemento());
    System.out.println(»Ö¸´ºóµÄ״̬Ϊ£º + origi.getValue());
}

}
¡°`
Êä³ö£º
³õʼ»¯×´Ì¬Îª£ºegg
Ð޸ĺóµÄ״̬Ϊ£ºniu
»Ö¸´ºóµÄ״̬Ϊ£ºegg
¼òµ¥ÃèÊöÏ£ºÐ½¨Ô­Ê¼Ààʱ£¬value±»³õʼ»¯Îªegg£¬ºó¾­¹ýÐ޸쬽«valueµÄÖµÖÃΪniu£¬×îºóµ¹ÊýµÚ¶þÐнøÐлָ´×´Ì¬£¬½á¹û³É¹¦»Ö¸´ÁË¡£ÆäʵÎÒ¾õµÃÕâ¸öģʽ½Ð¡°±¸·Ý-»Ö¸´¡±Ä£Ê½×îÐÎÏó¡£

7.Ïà¹ØÄ£Ê½

Commandģʽ£ºÃüÁîģʽ¿ÉÒÔʹÓñ¸Íü¼À´Îª¿É³·ÏúµÄ²Ù×÷ά»¤×´Ì¬¡£ Iteratorģʽ£ºÈçǰËùÊö±¸Íü¼¿ÉÓÃÓÚµü´ú¡£

?

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºBehavioralģʽ֮Mediatorģʽ ÏÂһƪ£º[LeetCode] Jump Game II

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: