package 备忘录模式;
public class 备忘录模式 {
public static void main(String[] args) {
CallOfDuty game = new CallOfDuty();
game.play();
Caretaker caretaker = new Caretaker();
caretaker.archive(game.createMemoto());
game.quit();
CallOfDuty newGame = new CallOfDuty();
newGame.restore(caretaker.getMemoto());
}
}
package 备忘录模式;
public class CallOfDuty {
private int mCheckpoint = 1;
private int mLifeValue = 10;
private String mWeapon = "沙漠之鹰";
public void play(){
System.out.println("玩游戏: "+ String.format("第 %d 关", mCheckpoint)+ "奋战杀敌中");
mLifeValue -= 10;
System.out.println("进度升级了");
mCheckpoint ++;
System.out.println(" 到达:"+String.format("第 %d 关", mCheckpoint));
}
public void quit(){
System.out.println(" ------------------- ");
System.out.println("退出前的属性"+ toString());
System.out.println("退出游戏");
System.out.println(" ------------------- ");
}
@Override
public String toString() {
return "CallOfDuty [mCheckpoint=" + mCheckpoint + ", mLifeValue=" + mLifeValue + ", mWeapon=" + mWeapon + "]";
}
public Memoto createMemoto(){
Memoto memoto = new Memoto();
memoto.mCheckpoint = mCheckpoint;
memoto.mLifeValue = mLifeValue;
memoto.mWeapon = mWeapon;
return memoto;
}
public void restore(Memoto memoto){
mCheckpoint = memoto.mCheckpoint;
mLifeValue = memoto.mLifeValue;
mWeapon = memoto.mWeapon;
System.out.println("恢复游戏后的属性 "+ toString());
}
}
package 备忘录模式;
public class Memoto {
public int mCheckpoint;
public int mLifeValue;
public String mWeapon;
@Override
public String toString() {
return "Memoto [mCheckpoint=" + mCheckpoint + ", mLifeValue=" + mLifeValue + ", mWeapon=" + mWeapon + "]";
}
}
package 备忘录模式;
public class Caretaker {
private Memoto mMemoto;
public Memoto getMemoto(){
return mMemoto;
}
public void archive(Memoto memoto){
mMemoto = memoto;
}
}