先分析它的角色:看下图
由于它是行为型模式,所以从动作入手来分析它:
先看Client:
public class Client {
private static Originator o = new Originator();
private static Caretaker c = new Caretaker();
public static void main(String[] args) {
//改变发起人的状态
o.setState("on");
//创建备忘录对象,并保持于管理保持
c.saveMemento(o.createMemento());
//改变发起人的状态
o.setState("off");
//还原状态
o.restoreMemento(c.retrieveMemento());
}
}
调用中:没有出现Memento角色,说明,这个角色只是一个状态.它只是记录一个状态,而行动则有其他两个来完成.先看两个执行者
这是发起人:这个会创建个Memento来维持状态,相当于打开备忘录并添加
public class Originator {
private String state;
public Memento createMemento(){
return new Memento(state);
}
public void restoreMemento(Memento memento){
this.state = memento.getState();
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}这是守护者:这个会维持Memento的状态,比如查看,修改
public class Caretaker {
private Memento memento;
//描述:取值
public Memento retrieveMemento(){
return memento;
}
//描述:设值
public void saveMemento(Memento memento){
this.memento = memento;
}
}最后看备忘录:
public 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;
}
}这个模式的重点是要理解两个执行者的调用.则这个Memento就很明确了
本文出自 “梦的空间” 博客,请务必保留此出处http://fawor.blog.51cto.com/5113667/1369755
分分钟搞定备忘录模式(Memento),布布扣,bubuko.com
原文:http://fawor.blog.51cto.com/5113667/1369755