设计模式之(13)——备忘录模式
Posted Java老僧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之(13)——备忘录模式相关的知识,希望对你有一定的参考价值。
福利干货第一时间送达!
二. 有何优点
备忘录模式方便的给用户提供一种可以恢复状态的机制,用户可以方便的回到
历史状态,并且对信息进行了封装。
三. 初尝备忘录模式
1. 我们先画图以便理解。
2. 我们先创建一个 Original 原始类。
1public class Original {
2 private String value;
3
4 public String getValue() {
5 return value;
6 }
7
8 public void setValue(String value) {
9 this.value = value;
10 }
11
12 public Original(String value) {
13 super();
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
25}
3. 我们创建 Memento 备忘录类。
1public class Memento {
2 private String value;
3
4 public Memento(String value) {
5 this.value = value;
6 }
7
8 public String getValue() {
9 return value;
10 }
11
12 public void setValue(String value) {
13 this.value = value;
14 }
15
16}
4. 创建 Storage 类用来存储备忘录的类。
1public class Storage {
2 private Memento memento;
3
4 public Storage(Memento memento) {
5 this.memento = memento;
6 }
7
8 public Memento getMemento() {
9 return memento;
10 }
11
12 public void setMemento(Memento memento) {
13 this.memento = memento;
14 }
15
16}
5. 进行测试。
1public class Test {
2 public static void main(String[] args) {
3
4 // 创建原始类
5 Original origi = new Original("Car");
6
7 // 创建备忘录
8 Storage storage = new Storage(origi.createMemento());
9
10 // 修改原始类的状态
11 System.out.println("初始化状态为:" + origi.getValue());
12 origi.setValue("SportCar");
13 System.out.println("修改后的状态为:" + origi.getValue());
14
15 // 回复原始类的状态
16 origi.restoreMemento(storage.getMemento());
17 System.out.println("恢复后的状态为:" + origi.getValue());
18 }
19
20}
测试结果为:
初始化状态为:Car
修改后的状态为:SportCar
恢复后的状态为:Car
四. 总结
备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态并且在该对象之外保存这个状态,这样方便以后将对象恢复到原来的状态。
END
以上是关于设计模式之(13)——备忘录模式的主要内容,如果未能解决你的问题,请参考以下文章
JAVA SCRIPT设计模式--行为型--设计模式之Memnto备忘录模式(18)