首页 > 其他 > 详细

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

时间:2014-03-08 00:50:28      阅读:507      评论:0      收藏:0      [点我收藏+]

先分析它的角色:看下图

bubuko.com,布布扣

由于它是行为型模式,所以从动作入手来分析它:

先看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

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

原文:http://fawor.blog.51cto.com/5113667/1369755

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!