备忘录模式
作者:互联网
需要让保存对象之前的状态,在必要时回退可以使用备忘录模式
(图:wiki)
示例
//备忘录 public class Memento { private String state; public Memento(String state){ this.state = state; } public String getState() { return state; } } //需要记录状态的对象 public class MasterGame { private String gameState;//游戏状态 public Memento saveToMemento() { return new Memento(this.gameState); } public void restoreFromMemento(Memento memento) { this.setGameState(memento.getState()); } public void setGameState(String gameState) { this.gameState = gameState; System.out.println(this.gameState); } public String getGameState() { return gameState; } } //用来储存多个备忘录状态 public class MementoStorage { private List<Memento> mementos = new ArrayList<>(); public void addMemento(Memento memento) { mementos.add(memento); } public Memento get(int i) { System.out.println("获取第" + (i+1) + "次存储的状态"); return mementos.get(i); } } //测试 public class Client { public static void main(String[] args){ MasterGame game = new MasterGame(); MementoStorage mementoStorage = new MementoStorage(); game.setGameState("第一关"); mementoStorage.addMemento(game.saveToMemento()); game.setGameState("第二关"); mementoStorage.addMemento(game.saveToMemento()); game.setGameState("第三关"); mementoStorage.addMemento(game.saveToMemento()); game.restoreFromMemento(mementoStorage.get(0)); game.restoreFromMemento(mementoStorage.get(1)); game.restoreFromMemento(mementoStorage.get(2)); } }
运行结果
标签:String,模式,备忘录,game,gameState,mementoStorage,public,Memento 来源: https://www.cnblogs.com/camcay/p/12380165.html