备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。以下是例子:
public class Originator {
String stata;
static Memento temp;
public String setState(String str){
//设置状态
System.out.println("State="+str);
return str; }
public Memento CreateMemento(String state){
temp = new Memento(state);
return temp; }
public void SetMemento(Memento memento){
System.out.println("恢复初始状态");
System.out.println("State="+temp.State()); } }
//管理类
//备忘录类
public class Memento {
String state;
public Memento(String state){
this.state = state; }
public String State(){
return state; } }
//测试类
public class Test {
Originator o = new Originator();
String str = o.setState("ON"); //初始状态为"On"
Caretaker c = new Caretaker();
c.memento = o.CreateMemento(str); //保存状态时,由于有了很多的封装,可以隐藏Originator的实现细节
o.setState("OFF"); //Originator改变了状态属性为"OFF"
o.SetMemento(c.memento); //恢复初始状态 } }