分分钟搞定备忘录模式(Memento)
2014-03-07 11:58
357 查看
先分析它的角色:看下图
由于它是行为型模式,所以从动作入手来分析它:
先看Client:
调用中:没有出现Memento角色,说明,这个角色只是一个状态.它只是记录一个状态,而行动则有其他两个来完成.先看两个执行者
这是发起人:这个会创建个Memento来维持状态,相当于打开备忘录并添加
由于它是行为型模式,所以从动作入手来分析它:
先看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就很明确了
相关文章推荐
- 研磨设计模式 之 备忘录模式(Memento)1——跟着cc学设计系列
- Memento 备忘录模式
- GOF 23 设计模式之 备忘录模式(Memento)
- Java设计模式-----Memento备忘录模式
- memento 备忘录模式
- 研磨设计模式 之 备忘录模式(Memento)1??跟着cc学设计系列
- 设计模式学习-Memento(备忘录)
- 《模式——工程化实现及扩展》(设计模式C# 版)《备忘录模式 Memento》——“自我检验" 参考答案
- JAVA设计模式-备忘录模式-Memento-游戏备份存档
- (Boolan)C++设计模式 <十> ——状态模式(State)和备忘录(Memento)
- 行为型模式-备忘录(memento)
- 备忘录模式——Memento
- Memento模式 备忘录模式
- 设计模式学习-Memento(备忘录)
- 设计模式----Memento(备忘录)模式
- java设计模式--迭代器模式 Iterator,备忘录模式 Memento,中介者模式 Mediator
- 第21讲:Memento 备忘录模式
- 备忘录(memento)模式
- 设计模式十九:memento(备忘录)——对象行为型模式
- 设计模式学习笔记(十七)—Memento备忘录模式