欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 备忘录模式

备忘录模式

2024/10/26 3:33:06 来源:https://blog.csdn.net/weixin_74144099/article/details/142562765  浏览:    关键词:备忘录模式

备忘录模式

备忘录(Memento)模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。

案例

每次玩游戏时从服务器读取存档,退出后保存存档

存档类:

public class GameRecoder {Integer id;Integer level;public GameRecoder(Integer id, Integer level) {this.id = id;this.level = level;}@Overridepublic String toString() {return "GameRecoder{" +"id=" + id +", level=" + level +'}';}
}

服务器:

public class GameServer {Map<Integer,GameRecoder> map = new HashMap<>();int cur = 0;{cur++;GameRecoder gameRecoder = new GameRecoder(cur, 1);map.put(cur,gameRecoder);}public void addRecord(Integer level){cur++;GameRecoder gameRecoder = new GameRecoder(cur, level);map.put(cur,gameRecoder);System.out.println("添加存档:"+gameRecoder);}public GameRecoder getRecord(){System.out.println("读取存档:"+map.get(cur));return map.get(cur);}
}

游戏:

public class MyGame {private Integer level;GameServer server = new GameServer();public void play(){GameRecoder record = server.getRecord();level = record.level;System.out.println("开始游戏,当前等级:"+level);level++;}// 存档private void save(){server.addRecord(level);}public void exit(){System.out.println("退出游戏");save();}
}

测试:

public class Main {public static void main(String[] args) {MyGame myGame = new MyGame();myGame.play();myGame.exit();myGame.play();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com