Java 之 23 种设计模式解析——19、备忘录模式(Memento)

类的状态

19、备忘录模式(Memento)

主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。做个图来分析一下:

Java 之 23 种设计模式解析——19、备忘录模式(Memento)_第1张图片

Original类是原始类,里面有需要保存的属性value及创建一个备忘录类,用来保存value值。Memento类是备忘录类,Storage类是存储备忘录的类,持有Memento类的实例,该模式很好理解。直接看源码:

1. public class Original {
2.
3.	private String value;
4.
5.	public String getValue() {
6.	return value;
7.	}
8.
9.	public void setValue(String value) {
10.	this.value = value;
11.	}
12.
13.	public Original(String value) {
14.	this.value = value;
15.	}
16.
17.	public Memento createMemento(){
18.	return new Memento(value);
19.	}
20.
21.	public void restoreMemento(Memento memento){
22.	this.value = memento.getValue();
23.	}
24. }
1. public class Memento {
2.
3.	private String value;
4.
5.	public Memento(String value) {
6.	this.value = value;
7.	}
8.
9.	public String getValue() {
10.	return value;
11.	}
12.
13.	public void setValue(String value) {
14.	this.value = value;
15.	}
16. }
1. public class Storage {
2.
3.	private Memento memento;
4.
5.	public Storage(Memento memento) {
6.	this.memento = memento;
7.	}
8.
9.	public Memento getMemento() {
10.	return memento;
11.	}
12.
13.	public void setMemento(Memento memento) {
14.	this.memento = memento;
15.	}
16. }

 

测试类:

1. public class	Test {
2.
3.	public static void main(String[] args) {
4.
5.	// 创建原始类
6.	Original origi = new Original("egg");
7.
8.	// 创建备忘录
9.	Storage storage = new Storage(origi.createMemento());
10.
11.	// 修改原始类的状态
12.	System.out.println("初始化状态为:" + origi.getValue());
13.	origi.setValue("niu");
14.	System.out.println("修改后的状态为:" + origi.getValue());
15.
16.	// 回复原始类的状态
17.	origi.restoreMemento(storage.getMemento());
18.	System.out.println("恢复后的状态为:" + origi.getValue());
19.	}
20. }

输出:

初始化状态为:egg
修改后的状态为:niu
恢复后的状态为:egg

简单描述下:新建原始类时,value被初始化为egg,后经过修改,将value的值置为niu,最后倒数第二行进行恢复状态,结果成功恢复了。其实我觉得这个模式叫“备份-恢复”模式最形象。

目录:(点击进入相应页面)

概述、六大原则

一、创建模式

0、简单工厂模式

1.工厂方法模式(Factory Method)

2、抽象工厂模式

3、单例模式(Singleton)

4、建造者模式(Builder)

5、原型模式(Prototype)

二、结构模式(7种)

6、适配器模式

7、装饰模式(Decorator)

8、代理模式(Proxy)

9、外观模式(Facade)

10、桥接模式(Bridge)

11、组合模式(Composite)

12、享元模式(Flyweight)

三、关系模式(11种)

13、策略模式(strategy)

14、模板方法模式(Template Method)

15、观察者模式(Observer)

16、迭代子模式(Iterator)

17、责任链模式(Chain of Responsibility)

18、命令模式(Command)

19、备忘录模式(Memento

20、状态模式(State)

21、访问者模式(Visitor)

22、中介者模式(Mediator)

23、解释器模式(Interpreter)

你可能感兴趣的:(23种设计模式)