备忘录模式
程序员文章站
2022-05-03 21:39:56
...
备忘录模式有叫备份模式, 相信这个概念很好理解。 大家都玩过游戏, 杀过怪, 升过级。。。 在被Boss杀死之后只需要恢复到死之前的那一关就可以了。
那我们来看看是怎样实现的
先看看这个游戏, 游戏可以存档和恢复
再定义这个“档”
定义好了“档”, 还需要一个存档器 - ArchiveManager
同样很简单, 就是一个Map
都好了就看看客户端代码吧:
是不是很简单明了:
那我们来看看是怎样实现的
先看看这个游戏, 游戏可以存档和恢复
public class Game { private String level; public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } public IArchive createArchive() { return new Archive(this.level); } public void restoreArchive(IArchive archive) { this.level = ((Archive) archive).getLevel(); } }
再定义这个“档”
// 空接口 public interface IArchive { } // 简单实现, 仅包含游戏级别的信息 public class Archive implements IArchive { private String level; public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } public Archive(String level) { this.level = level; } }
定义好了“档”, 还需要一个存档器 - ArchiveManager
public class ArchiveManager { private Map<String, IArchive> archiveList = new HashMap<String, IArchive>(); public void put(String name, IArchive archive) { this.archiveList.put(name, archive); } public IArchive get(String name) { return archiveList.get(name); } }
同样很简单, 就是一个Map
都好了就看看客户端代码吧:
public class Client { public static void main(String[] args) { Game game = new Game(); game.setLevel("60级"); System.out.println("游戏开始了, 一切很顺利, 升到60级了"); game.setLevel("0级"); System.out.println("被大Boss打死了,重新开始。 完了, 没有备份, 哭都哭不出来。。。"); System.out.println("没办法, 重新从0级开始"); game.setLevel("1级"); System.out.println("吸取教训, 每升一级就备份一下"); ArchiveManager archiveManager = new ArchiveManager(); archiveManager.put("1级", new Archive(game.getLevel())); System.out.println("继续打怪。。。"); System.out.println("一不小心分神了, 竟然被两级的怪打死了。。。"); System.out.println("还好有备份,恢复一下就好"); game.setLevel(((Archive) archiveManager.get("1级")).getLevel()); System.out.println("游戏恢复到了" + game.getLevel()); } }
是不是很简单明了:
引用
游戏开始了, 一切很顺利, 升到60级了
被大Boss打死了,重新开始。 完了, 没有备份, 哭都哭不出来。。。
没办法, 重新从0级开始
吸取教训, 每升一级就备份一下
继续打怪。。。
一不小心分神了, 竟然被两级的怪打死了。。。
还好有备份,恢复一下就好
游戏恢复到了1级
被大Boss打死了,重新开始。 完了, 没有备份, 哭都哭不出来。。。
没办法, 重新从0级开始
吸取教训, 每升一级就备份一下
继续打怪。。。
一不小心分神了, 竟然被两级的怪打死了。。。
还好有备份,恢复一下就好
游戏恢复到了1级
上一篇: 18.备忘录模式(Memento Pattern)
下一篇: Java 集合中的类关于线程安全