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

2014-11-24 08:31:52 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 13

* ¹¹Ôì·½·¨
*/
private Memento(String state) {
this.state = state;
}

private String getState() {
return state;
}

private void setState(String state) {
this.state = state;
}
}
}
package com.bankht.Memento.sample2;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:33:55
*
* @Àà˵Ã÷
* £º·¢ÆðÈ˽ÇÉ«ÀàOriginatorÖж¨ÒåÁËÒ»¸öÄÚ²¿µÄMementoÀà¡£
* ÓÉÓÚ´ËMementoÀàµÄÈ«²¿½Ó¿Ú¶¼ÊÇ˽Óеģ¬Òò´ËÖ»ÓÐËü×Ô¼ººÍ·¢ÆðÈËÀà¿ÉÒÔµ÷Óá£
*/
public class Originator {

private String state;

public String getState() {
return state;
}

public void setState(String state) {
this.state = state;
System.out.println("¸³Öµ×´Ì¬£º" + state);
}

/**
* ¹¤³§·½·¨£¬·µ»¹Ò»¸öеı¸Íü¼¶ÔÏó
*/
public MementoIF createMemento() {
return new Memento(state);
}

/**
* ·¢ÆðÈ˻ָ´µ½±¸Íü¼¶ÔÏó¼Ç¼µÄ״̬
*/
public void restoreMemento(MementoIF memento) {
this.setState(((Memento) memento).getState());
}

private class Memento implements MementoIF {

private String state;

/**
* ¹¹Ôì·½·¨
*/
private Memento(String state) {
this.state = state;
}

private String getState() {
return state;
}

private void setState(String state) {
this.state = state;
}
}
}

¡¡¡¡Õ­½Ó¿ÚMementoIF£¬ÕâÊÇÒ»¸ö±êʶ½Ó¿Ú£¬Òò´ËËüûÓж¨Òå³öÈκεķ½·¨¡£

[java]
package com.bankht.Memento.sample2;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:34:25
*
* @Àà˵Ã÷ £ºÕ­½Ó¿ÚMementoIF£¬ÕâÊÇÒ»¸ö±êʶ½Ó¿Ú£¬Òò´ËËüûÓж¨Òå³öÈκεķ½·¨¡£
*/
public interface MementoIF {

}
package com.bankht.Memento.sample2;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:34:25
*
* @Àà˵Ã÷ £ºÕ­½Ó¿ÚMementoIF£¬ÕâÊÇÒ»¸ö±êʶ½Ó¿Ú£¬Òò´ËËüûÓж¨Òå³öÈκεķ½·¨¡£
*/
public interface MementoIF {

}

¡¡¡¡¸ºÔðÈ˽ÇÉ«ÀàCaretakerÄܹ»µÃµ½µÄ±¸Íü¼¶ÔÏóÊÇÒÔMementoIFΪ½Ó¿ÚµÄ£¬ÓÉÓÚÕâ¸ö½Ó¿Ú½ö½öÊÇÒ»¸ö±êʶ½Ó¿Ú£¬Òò´Ë¸ºÔðÈ˽ÇÉ«²»¿ÉÄܸıäÕâ¸ö±¸Íü¼¶ÔÏóµÄÄÚÈÝ¡£

[java]
package com.bankht.Memento.sample2;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:35:20
*
* @Àà˵Ã÷ £º
* ¸ºÔðÈ˽ÇÉ«ÀàCaretakerÄܹ»µÃµ½µÄ±¸Íü¼¶ÔÏóÊÇÒÔMementoIFΪ½Ó¿ÚµÄ£¬ÓÉÓÚÕâ¸ö½Ó¿Ú½ö½öÊÇÒ»¸ö±êʶ½Ó¿Ú£¬
* Òò´Ë¸ºÔðÈ˽ÇÉ«²»¿ÉÄܸıäÕâ¸ö±¸Íü¼¶ÔÏóµÄÄÚÈÝ¡£
*/
public class Caretaker {

private MementoIF memento;

/**
* ±¸Íü¼ȡֵ·½·¨
*/
public MementoIF retrieveMemento() {
return memento;
}

/**
* ±¸Íü¼¸³Öµ·½·¨
*/
public void saveMemento(MementoIF memento) {
this.memento = memento;
}
}
package com.bankht.Memento.sample2;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:35:20
*
* @Àà˵Ã÷ £º
* ¸ºÔðÈ˽ÇÉ«ÀàCaretakerÄܹ»µÃµ½µÄ±¸Íü¼¶ÔÏóÊÇÒÔMementoIFΪ½Ó¿ÚµÄ£¬ÓÉÓÚÕâ¸ö½Ó¿Ú½ö½öÊÇÒ»¸ö±êʶ½Ó¿Ú£¬
* Òò´Ë¸ºÔðÈ˽ÇÉ«²»¿ÉÄܸıäÕâ¸ö±¸Íü¼¶ÔÏóµÄÄÚÈÝ¡£
*/
public class Caretaker {

private MementoIF memento;

/**
* ±¸Íü¼ȡֵ·½·¨
*/
public MementoIF retrieveMemento() {
return memento;
}

/**
* ±¸Íü¼¸³Öµ·½·¨
*/
public void saveMemento(MementoIF memento) {
this.memento = memento;
}
}

¡¡¡¡¿Í»§¶Ë½ÇÉ«Àà

[java]
package com.bankht.Memento.sample2;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:36:01
*
* @Àà˵Ã÷ £º¿Í»§¶Ë½ÇÉ«Àà
*/
public class Client {

public static void main(String[] args) {
Originator o = new Originator();
Caretaker c = new Caretaker();
// ¸Ä±ä¸ºÔðÈ˶ÔÏóµÄ״̬
o.setState("On");
// ´´½¨±¸Íü¼¶ÔÏ󣬲¢½«·¢ÆðÈ˶ÔÏóµÄ״̬´æ´¢ÆðÀ´
c.saveMemento(o.createMemento());
// Ð޸ķ¢ÆðÈ˶ÔÏóµÄ״̬
o.setState("Off");
// »Ö¸´·¢ÆðÈ˶ÔÏóµÄ״̬
o.restoreMemento(c.retrieveMemento());
}

}
package com.bankht.Memento.sample2;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-2 ÏÂÎç04:36:01
*
* @Àà˵Ã÷ £º¿Í»§¶Ë½ÇÉ«Àà
*/
public class Client {

public static void main(String[] args) {
Origin