备忘录模式在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象以外保存这个状态,以便恢复到原先保存的状态,属于行为型模式。 bash
优势:ui
缺点:this
定义发起人角色Game 类spa
public class Game {
private int level = 1;
private int coin = 0;
public void upgrade() {
level++;
coin += level * 100;
}
public void exit(){
// 退出游戏逻辑
}
public Memento createMemento() {
return new Memento(level, coin);
}
public void setMemento(Memento memento) {
this.level = memento.getLevel();
this.coin = memento.getCoin();
}
}
复制代码
定义备忘录角色Mementocode
public class Memento {
private int level;//等级
private int coin;//金币数量
public Memento(int level, int coin) {
this.level = level;
this.coin = coin;
}
public int getCoin() {
return coin;
}
public int getLevel() {
return level;
}
}
复制代码
定义备忘录管理员角色Caretakercdn
public class Caretaker {
private Memento memento;
public void setMemento(Memento memento) {
this.memento = memento;
}
public Memento getMemento() {
return memento;
}
}
复制代码
客户端调用对象
Game game = new Game();
game.upgrade();
Memento memento = game.createMemento();//建立存档
Caretaker caretaker = new Caretaker();
caretaker.setMemento(memento);//保存存档
game.exit();//退出游戏
Game secondGame = new Game();
secondGame.setMemento(caretaker.getMemento());//读取存档
复制代码