备忘录模式(Memento):主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象。
##一、uml建模:
![](https://box.kancloud.cn/2016-02-19_56c7196edaac4.jpg)
##二、代码实现
~~~
/**
* 备忘录模式(Memento):主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象
*
* 示例:原始类--> 创建、恢复备忘录
*/
class Original {
private String state;
public Original(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
/**
* 创建备忘录
*/
public Memento createMemento() {
return new Memento(state);
}
/**
* 恢复备忘录
*/
public void recoverMemento(Memento memento) {
this.state = memento.getState();
}
}
/**
* 备忘录
*/
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;
}
}
/**
* 用来存储备忘录(持有备忘录实例):只能存储,不能修改
*/
class Storage {
private Memento memento;
public Storage(Memento memento) {
this.memento = memento;
}
public Memento getMemento() {
return memento;
}
}
/**
* 客户端测试类
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
/**
* 创建原始对象
*/
Original original = new Original("白天模式");
System.out.println("original初始状态为:" + original.getState());
/**
* 创建备忘录
*
* 注意:original.createMemento()会将初始state(白天模式)传给Memento对象
*
* 以备需要的时候可以调用storage.getMemento()来拿到该state(白天模式)状态
*
* 相当于state(白天模式)这个状态已经委托给了storage这个对象来保存
*/
Storage storage = new Storage(original.createMemento());
original.setState("夜间模式");
System.out.println("original修改后的状态为:" + original.getState());
/**
* 恢复备忘录
*/
original.recoverMemento(storage.getMemento());
System.out.println("original恢复后的状态为:" + original.getState());
}
}
~~~
##三、总结
Memento备忘录设计模式用来备份一个对象的当前状态,当需要的时候,用这个备份来恢复这个对象在某一个时刻的状态。
- 前言
- (一)策略模式建模与实现
- (二)观察者模式建模与实现
- (三)装饰者模式建模与实现
- (四)工厂方法模式建模与实现
- (五)抽象工厂模式建模与实现
- (六)单例模式建模与实现
- (七)命令模式建模与实现
- (八)适配器模式建模与实现
- (九)外观模式建模与实现
- (十)模板方法模式建模与实现
- (十一)迭代器模式建模与实现
- (十二)组合模式建模与实现
- (十三)状态模式建模与实现
- (十四)代理模式建模与实现
- (十五)建造者模式建模与实现
- (十六)原型模式建模与实现
- (十七)桥接模式建模与实现
- (十八)责任链模式建模与实现
- (十九)备忘录模式建模与实现
- (二十)解释器模式建模与实现
- (二十一)享元模式建模与实现
- (二十二)中介者模式建模与实现
- (二十三)访问者模式建模与实现
- Java设计模式博客全目录