角色:originator(发起者)memento(回忆,备忘录)caretaker(守护者,管理者)
模式的作用,可以记录发起者改变之前的状态,必要的时候可以将发起者的状态还原。
public class beiwanglu {
public static void main(String[] args) {
Originator originator = new Originator();
originator.setState("状态1");
Caretaker caretaker = new Caretaker();
System.out.println("1:" + originator.getState());
Memento memento = originator.createMento();
caretaker.setMemento(memento);
originator.setState("状态2");
System.out.println("2:" + originator.getState());
originator.restoreState(memento);
System.out.println("3:" + originator.getState());
}
}
class Originator {
private String state = "";
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Memento createMento(){
return new Memento(this.state);
}
public void restoreState(Memento memento){
this.setState(memento.getState());
}
}
class Memento{
private String state = "";
public Memento(String state){
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
class Caretaker{
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
其中发起者有个状态属性,回忆也有个状态属性,主要用来保存发起者的状态,守护者有个回忆属性,可以创建回忆。发起者可以创建一个回忆, 和根据回忆更改自己的状态。测试方法中,可以看到,先创建一个发起者对象,设置属性,发起者产生一个回忆,创建一个守护者,这个守护者再保存这个回忆。发起者的状态再进行变化。。。
发起者可以根据守护者保存的回忆进行状态的还原。
感谢java知音
https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247484590&idx=2&sn=0f3cbda10e038ac7a7056742f0d261af&chksm=ebd63b82dca1b294555a3c40bc6c7da1466b5bdf9e970b863ea1809016ebd8460ac5acbe43fc&mpshare=1&scene=23&srcid=1220DcV5cuX5dB5pkSQc0N1c#rd