¡¶JAVAÓëģʽ¡·µÚ22Ìì¨D±¸Íü¼ģʽ (Îå)

2014-11-24 08:31:52 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 10
blic List getStates() {
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 states;
private int index;

/**
* ¹¹Ô캯Êý
*/
public Memento(List states, int index) {
this.states = new ArrayList(states);
this.index = index;
}

public List getStates() {
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 mementos = new ArrayList();
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 mementos = new ArrayList();
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);