标签:memento
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。
适用场合:比较适合用于功能比较复杂,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时。
首先定义一个Originator(发起人)类
public class Originator {
private String state;//需要保存的属性(可以定义多个)
public void setState(String state){
this.state=state;
}
public String getState(){
return state;
}
//创建备忘录,将当前需要保存的信息导入并实例化一个Memento对象
public Memento createMemento(){
return new Memento(state);
}
//恢复备忘录
public void setMemento(Memento memento){
state=memento.getState();
}
public void show(){
System.out.println("state="+state);
}
}
定义一个Memento(备忘录)类
public class Memento {
private String state;
//通过构造方法将相关数据导入
public Memento(String state){
this.state=state;
}
public String getState(){
return state;
}
}
然后定义一个Caretaker(管理者)类,封装Memento
public class Caretaker {
private Memento memento;
//设置备忘录
public void setMemento(Memento memento){
this.memento=memento;
}
//得到备忘录
public Memento getMemento(){
return memento;
}
}
客户端代码
public static void main(String[] args) {
//备忘录模式
Originator originator=new Originator();
originator.setState("on");//初始状态为on
originator.show();
Caretaker caretaker=new Caretaker();
caretaker.setMemento(originator.createMemento());
originator.setState("off");//状态改变为off
originator.show();
//恢复原来状态
originator.setMemento(caretaker.getMemento());
originator.show();
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:memento
原文地址:http://blog.csdn.net/qq_16687803/article/details/46661849