return states;
}
public int getIndex() {
return index;
}
}
package com.bankht.Memento.Multiple;
import java.util.ArrayList;
import java.util.List;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:55:23
*
* @Àà˵Ã÷ £º±¸Íü¼½ÇÉ«À࣬Õâ¸öʵÏÖ¿ÉÒÔ´æ´¢ÈÎÒâ¶àµÄ״̬£¬Íâ½ç¿ÉÒÔʹÓüì²éµãÖ¸ÊýindexÀ´È¡³ö¼ì²éµãÉϵÄ״̬¡£¡¡¡¡
*/
public class Memento {
private List
private int index;
/**
* ¹¹Ô캯Êý
*/
public Memento(List
this.states = new ArrayList
this.index = index;
}
public List
return states;
}
public int getIndex() {
return index;
}
}
¡¡¡¡¸ºÔðÈ˽ÇÉ«Àà
[java]
package com.bankht.Memento.Multiple;
import java.util.ArrayList;
import java.util.List;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:56:08
*
* @Àà˵Ã÷ £º¸ºÔðÈ˽ÇÉ«Àà
*/
public class Caretaker {
private Originator o;
private List
private int current;
/**
* ¹¹Ô캯Êý
*/
public Caretaker(Originator o) {
this.o = o;
current = 0;
}
/**
* ´´½¨Ò»¸öеļì²éµã
*/
public int createMemento() {
Memento memento = o.createMemento();
mementos.add(memento);
return current++;
}
/**
* ½«·¢ÆðÈ˻ָ´µ½Ä³¸ö¼ì²éµã
*/
public void restoreMemento(int index) {
Memento memento = mementos.get(index);
o.restoreMemento(memento);
}
/**
* ½«Ä³¸ö¼ì²éµãɾ³ý
*/
public void removeMemento(int index) {
mementos.remove(index);
}
}
package com.bankht.Memento.Multiple;
import java.util.ArrayList;
import java.util.List;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:56:08
*
* @Àà˵Ã÷ £º¸ºÔðÈ˽ÇÉ«Àà
*/
public class Caretaker {
private Originator o;
private List
private int current;
/**
* ¹¹Ô캯Êý
*/
public Caretaker(Originator o) {
this.o = o;
current = 0;
}
/**
* ´´½¨Ò»¸öеļì²éµã
*/
public int createMemento() {
Memento memento = o.createMemento();
mementos.add(memento);
return current++;
}
/**
* ½«·¢ÆðÈ˻ָ´µ½Ä³¸ö¼ì²éµã
*/
public void restoreMemento(int index) {
Memento memento = mementos.get(index);
o.restoreMemento(memento);
}
/**
* ½«Ä³¸ö¼ì²éµãɾ³ý
*/
public void removeMemento(int index) {
mementos.remove(index);
}
}
¡¡¡¡¿Í»§¶Ë½ÇɫԴ´úÂë
[java]
package com.bankht.Memento.Multiple;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:56:31
*
* @Àà˵Ã÷ £º¿Í»§¶Ë½ÇɫԴ´úÂë
*/
public class Client {
public static void main(String[] args) {
Originator o = new Originator();
Caretaker c = new Caretaker(o);
// ¸Ä±ä״̬
o.setState("state 0");
// ½¨Á¢Ò»¸ö¼ì²éµã
c.createMemento();
// ¸Ä±ä״̬
o.setState("state 1");
// ½¨Á¢Ò»¸ö¼ì²éµã
c.createMemento();
// ¸Ä±ä״̬
o.setState("state 2");
// ½¨Á¢Ò»¸ö¼ì²éµã
c.createMemento();
// ¸Ä±ä״̬
o.setState("state 3");
// ½¨Á¢Ò»¸ö¼ì²éµã
c.createMemento();
// ´òÓ¡³öËùÓмì²éµã
o.printStates();
System.out.println("-----------------»Ö¸´¼ì²éµã-----------------");
// »Ö¸´µ½µÚ¶þ¸ö¼ì²éµã
c.restoreMemento(2);
// ´òÓ¡³öËùÓмì²éµã
o.printStates();
}
}
package com.bankht.Memento.Multiple;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:56:31
*
* @Àà˵Ã÷ £º¿Í»§¶Ë½ÇɫԴ´úÂë
*/
public class Client {
public static void main(String[] args) {
Originator o = new Originator();
Caretaker c = new Caretaker(o);