什么是备忘录模式
将对象的内部属性的原状态保存到外部对象中,之后对象属性状态改变了也可以恢复到原来保存的状态
示例图
![](https://img.haomeiwen.com/i25887870/bffd0a40615b9e21.png)
示例场景
模拟存档游戏关卡
示例代码
1.创建File游戏存档类
游戏存档类对关卡属性进行存档
public class File {
private String level;
public File(String level) {
this.level = level;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
2.创建GameLevel游戏关卡类
游戏关卡类用于展示存档 获取关卡存档 存取关卡存档
public class GameLevel {
private String level;
//存取当前关卡
public File currentLevel(){
return new File(level);
}
//获取存档
public void getFile(File file){
this.level = file.getLevel();
}
//显示关卡
public void showLevel(){
System.out.println("当前关卡为:"+level);
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
3.创建FileCaretaker游戏存档管理者
管理者用于存取存档对象信息
public class FileCaretaker {
private File file;
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
}
4.创建client启动类
public class Client {
public static void main(String[] args) {
GameLevel gameLevel = new GameLevel();
gameLevel.setLevel("第一关");
gameLevel.showLevel();
//创建存档管理者
FileCaretaker fileCaretaker = new FileCaretaker();
//存档管理者获取当前存档信息
fileCaretaker.setFile(gameLevel.currentLevel());
//重新设置关卡
gameLevel.setLevel("第三关");
gameLevel.showLevel();
//获取存档信息
gameLevel.getFile(fileCaretaker.getFile());
gameLevel.showLevel();
}
}
5.运行结果
![](https://img.haomeiwen.com/i25887870/b561ada20c02377e.png)
网友评论