先分析它的角色:看下图
由于它是行为型模式,所以从动作入手来分析它:
先看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