备忘录模式(Memento Pattern)是一种行为型设计模式,它允许你保存一个对象的状态,以便在未来的某个时间点恢复到该状态。该模式的核心思想是在不破坏对象封装性的前提下,将对象的状态保存在一个备忘录对象中,当需要恢复对象状态时,再从备忘录对象中恢复。
以下是一个简单的例子,假设我们有一个简单的文本编辑器,我们想要支持撤销和重做操作。这里我们使用备忘录模式来实现这个功能。
首先,我们需要创建一个备忘录类,用于保存文本编辑器的状态:
public class TextEditorMemento {
private String text;
public TextEditorMemento(String text) {
this.text = text;
}
public String getText() {
return text;
}
}
接下来,我们需要创建一个文本编辑器类,它包含一个字符串属性用于保存文本,以及两个方法用于保存和恢复文本编辑器的状态:
public class TextEditor {
private String text;
public TextEditor() {
this.text = "";
}
public void setText(String text) {
this.text = text;
}
public String getText() {
return text;
}
//保存文本
public TextEditorMemento save() {
return new TextEditorMemento(text);
}
//恢复文本
public void restore(TextEditorMemento memento) {
this.text = memento.getText();
}
}
最后,我们创建一个客户端类,用于测试我们的文本编辑器和备忘录模式:
public class Client {
public static void main(String[] args) {
TextEditor textEditor = new TextEditor();
textEditor.setText("Hello, World!");
TextEditorMemento memento = textEditor.save();
textEditor.setText("Goodbye, World!");
System.out.println(textEditor.getText()); // Output: "Goodbye, World!"
textEditor.restore(memento);
System.out.println(textEditor.getText()); // Output: "Hello, World!"
}
}
在这个例子中,我们创建了一个文本编辑器类,它包含一个字符串属性和两个方法。保存方法会返回一个备忘录对象,该对象包含当前文本编辑器的状态。恢复方法则接收一个备忘录对象,将文本编辑器的状态恢复到该备忘录对象所保存的状态。
在客户端类中,我们创建了一个文本编辑器对象,并将其文本设置为“Hello, World!”。接着,我们保存了文本编辑器的状态,并将文本修改为“Goodbye, World!”。然后,我们恢复文本编辑器的状态到之前保存的状态,并输出了文本编辑器的文本,确认恢复操作已成功。