20.Memento-备忘录模式
来源:互联网 发布:威科姆网络机顶盒 编辑:程序博客网 时间:2024/05/29 14:58
Memento 备忘录模式
备忘录模式:
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,
这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token。结构图:
示例类图:
示例代码:
public class Originator { private String state; public void setState(String state) { this.state = state; } public String getState() { return state; } public Memento saveStateToMemento() { return new Memento(state); } public void getStateFromMemento(Memento memento) { state = memento.getState(); }}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; }}public class CareTaker { private List<Memento> mementos = new ArrayList<Memento>(); public void add(Memento state) { mementos.add(state); } public Memento get(int index) { return mementos.get(index); }}// 测试public class MementoTest { public static void main(String[] args) { Originator originator = new Originator(); CareTaker careTaker = new CareTaker(); originator.setState("State #1"); originator.setState("State #2"); // 保存状态 careTaker.add(originator.saveStateToMemento()); originator.setState("State #3"); careTaker.add(originator.saveStateToMemento()); originator.setState("State #4"); System.out.println("Current State: " + originator.getState()); // 还原状态 originator.getStateFromMemento(careTaker.get(0)); System.out.println("First saved State: " + originator.getState()); originator.getStateFromMemento(careTaker.get(1)); System.out.println("Second saved State: " + originator.getState()); }}
角色:
Originator(原发器):
它是一个普通类,可以创建一个备忘录,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状态,一般将需要保存内部状态的类设计为原发器。Memento(备忘录):
存储原发器的内部状态,根据原发器来决定保存哪些内部状态。备忘录的设计一般可以参考原发器的设计,
根据实际需要确定备忘录类中的属性。需要注意的是,除了原发器本身与负责人类之外,
备忘录对象不能直接供其他类使用,原发器的设计在不同的编程语言中实现机制会有所不同。Caretaker(负责人):
负责人又称为管理者,它负责保存备忘录,但是不能对备忘录的内容进行操作或检查。
在负责人类中可以存储一个或多个备忘录对象,它只负责存储对象,而不能修改对象,也无须知道对象的实现细节。
备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,
当新的状态无效或者存在问题时,可以使用存储起来的备忘录将状态复原,
当前很多软件都提供了Undo(撤销)操作功能,就使用了备忘录模式。
0 0
- 20.Memento-备忘录模式
- 20.Memento-备忘录模式
- Memento模式 备忘录模式
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录(Memento)模式
- 备忘录模式(Memento Pattern)
- 备忘录(Memento)模式
- Memento 备忘录模式
- 15 Memento 备忘录模式
- 备忘录模式(Memento)
- Memento(备忘录模式)
- Memento备忘录模式
- 19.备忘录模式--Memento
- java Memento(备忘录模式)
- 备忘录模式 Memento Pattern
- 备忘录模式(Memento Pattern)
- Memento备忘录模式
- mvc
- 数据结构-----AVL树的旋转操作
- html5本地数据库
- 18.ChainOfResponsibility-职责链模式
- 19.Command-命令模式
- 20.Memento-备忘录模式
- 给View设置selector无效的解决办法。
- HBASE笔记
- Kotlin+Anko 你应该尝试的新Android开发方式
- MFC基于对话框上插入MENU菜单栏并点击菜单弹出新窗口
- Unity中的DeCoroutine
- 二叉树遍历
- 学习AIDL,这一篇文章就够了
- 碎片和活动之间进行通信