设计模式 - 19 Memento 备忘录模式
来源:互联网 发布:win10图片预览软件 编辑:程序博客网 时间:2024/06/05 15:03
一、什么是备忘录模式
Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。二、备忘录模式的应用场景
如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。1)一个类需要保存它的对象的状态(相当于Originator角色)
2)设计一个类,该类只是用来保存上述对象的状态(相当于Memento角色)
3)需要的时候,Caretaker角色要求Originator返回一个Memento并加以保存
4)undo或rollback操作时,通过Caretaker保存的Memento恢复Originator对象的状态
三、备忘录模式的结构
四、备忘录模式的角色和职责
Originator(原生者)需要被保存状态以便恢复的那个对象。
Memento(备忘录)
该对象由Originator创建,主要用来保存Originator的内部状态。
Caretaker(管理者)
负责在适当的时间保存/恢复Originator对象的状态。
五、例子
Person.java
public class Person { private String name; private String sex; private int age; public Person() {} public Person(String n, String s, int a) { name = n; sex = s; age = a; } public String getName() { return name; } public void setName(String n) { name = n; } public String getSex() { return sex; } public void setSex(String s) { sex = s; } public int getAge() { return age; } public void setAge(int a) { age = a; } public void display() { System.out.println("name: " + name + ", sex: " + sex + ", age: " + age); } // Creage a memento public Memento createMemento() { return new Memento(name, sex, age); } // Restore public void setMemento(Memento memento) { name = memento.getName(); sex = memento.getSex(); age = memento.getAge(); }}
Memento.java
public class Memento extends Person { private String name; private String sex; private int age; public Memento(String n, String s, int a) { super(n, s, a); }}
Caretaker.java
public class Caretaker { private Memento memento; public Memento getMemento() { return memento; } public void setMemento(Memento m) { memento = m; }}
MainClass.java
public class MainClass { public static void main(String[] args) { Person p = new Person("Jim", "Male", 23); Caretaker caretaker = new Caretaker(); //Memento m = p.createMemento(); caretaker.setMemento(p.createMemento()); //System.out.println(m.getName()); p.display(); p.setName("John"); p.setAge(20); p.display(); p.setMemento(caretaker.getMemento()); p.display(); }}
output:
- Memento(备忘录)设计模式
- 设计模式 - 19 Memento 备忘录模式
- 设计模式(19)-备忘录模式(Memento)
- 设计模式----Memento(备忘录)模式
- 设计模式--备忘录模式(Memento)
- [设计模式]memento备忘录模式
- [设计模式]备忘录模式(Memento)
- 设计模式之Memento(备忘录)
- 设计模式----Memento(备忘录)
- 设计模式学习-Memento(备忘录)
- .NET设计模式(19):备忘录模式(Memento Pattern)
- java设计模式19——备忘录模式(Memento)
- JAVA设计模式(19) —<行为型>备忘录模式(Memento)
- 设计模式(13)-备忘录模式(Memento)
- Java设计模式-----Memento备忘录模式
- 设计模式—Memento备忘录模式
- 设计模式23:Memento Pattern (备忘录模式)
- 设计模式(15)-备忘录模式(Memento)
- 设计模式之设计原则
- 使用google的zxing类生成一维码、二维码实例
- 介绍一个很好的英语学习软件——单词风暴
- ubuntu下vim配置使用
- 2013新年之愿
- 设计模式 - 19 Memento 备忘录模式
- AIX 操作系统中AIO、DIO、CIO 的相关概念介绍
- 2011-06-08 16:17 DB2 安装与 SQL0952N错误
- 利用Apache Axis开发JAX-RPC服务
- Elance新手入门
- 韶关上坝村回访 矿山污染形成血红色水库
- iOS系统GCD学习(6):Dispatch Sources
- 从30-35岁:为你的生命多积累一些厚度
- 程序的灵魂