请用java帮我写一个备忘录模式的例子
时间: 2024-03-03 12:54:01 浏览: 30
好的,以下是一个简单的备忘录模式的例子:
首先,我们需要创建一个备忘录类,用于保存对象的状态:
```java
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
```
然后,我们需要创建一个原始对象类,用于保存状态并创建备忘录:
```java
public class Originator {
private String state;
public void setState(String state) {
this.state = state;
}
public String getState() {
return state;
}
public Memento createMemento() {
return new Memento(state);
}
public void restoreMemento(Memento memento) {
state = memento.getState();
}
}
```
接下来,我们需要创建一个负责保存和恢复备忘录的管理类:
```java
public class Caretaker {
private List<Memento> mementos = new ArrayList<>();
public void addMemento(Memento memento) {
mementos.add(memento);
}
public Memento getMemento(int index) {
return mementos.get(index);
}
}
```
最后,我们可以使用备忘录模式来保存和恢复对象的状态:
```java
public class Main {
public static void main(String[] args) {
Originator originator = new Originator();
Caretaker caretaker = new Caretaker();
originator.setState("State 1");
caretaker.addMemento(originator.createMemento());
originator.setState("State 2");
caretaker.addMemento(originator.createMemento());
originator.restoreMemento(caretaker.getMemento(0));
System.out.println(originator.getState()); // Output: State 1
originator.restoreMemento(caretaker.getMemento(1));
System.out.println(originator.getState()); // Output: State 2
}
}
```
在这个例子中,我们创建了一个原始对象类 `Originator`,一个备忘录类 `Memento`,以及一个用于保存和恢复备忘录的管理类 `Caretaker`。我们创建了两个备忘录,保存了 `Originator` 对象的两个不同状态,然后通过 `Caretaker` 对象来获取并恢复这些状态。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)