备忘录模式(Memento)

1

定义

  备忘录模式(Memento):属于行为型模式,可以在不暴露对象细节的情况下保存和恢复对象原来的状态。

代码实战

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Memento {
private Stack<Snapshot> snapshots = new Stack<>();

private String text;

void change(String text) {
this.text = text;
}

void save() {
snapshots.push(new Snapshot(text));
}

void back() {
if (!snapshots.empty()) {
text = snapshots.pop().getText();
}
}

void print() {
System.out.println(text);
}
}

class Snapshot {
private String text;

Snapshot(String text) {
this.text = text;
}

public String getText() {
return text;
}
}

class Test {
public static void main(String[] args) {
Memento memento = new Memento();
memento.change("hello");
memento.change("world");
memento.save();
memento.change("hello");
memento.change("java");
memento.save();
memento.change("end");
memento.print();
memento.back();
memento.print();
memento.back();
memento.print();
}
}

类图

1

特点

  备忘录模式的特点是,创建一个备忘录类和一个快照类。其中备忘录内的细节都是private的。备忘录持有一个快照的栈,用于恢复和保存。当需要保存时,创建一个快照放入栈中。当需要返回时,将快照从栈中弹出,并恢复快照中的内容。

总结

  备忘录模式使用的场景较少,一般业务开发都是顺序执行,较少情况出现回退的场景。可能做游戏开发、编辑类应用开发需要使用。

-------------本文结束感谢您的阅读-------------
0%