您的位置:首页 > 其它

分分钟搞定备忘录模式(Memento)

2014-03-07 11:58 357 查看
先分析它的角色:看下图



由于它是行为型模式,所以从动作入手来分析它:
先看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就很明确了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  备忘录 开发技术