备忘录模式 「爱情、让人受尽委屈。」 2022-09-23 15:52 5阅读 0赞 ## 备忘录模式 ## ### 定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 ### ### 类图: ### ![这里写图片描述][20160721115028984] ### 备忘录模式的角色: ### * 发起人(Originator):要被备份的成员,它提供一创建备忘录的方法,其实就是将它自身的某些信息拷贝一份到一个备忘录对象中。并提供另外一个方法将备忘录中的信息覆盖自身的信息。 * 备忘录(Memento):备忘录对象中包含存储发起人状态的成员变量,它提供set,get或构造方法保存发起人状态及获取发起人状态。 * 管理角色(Caretaker):用于管理备忘录对象的实现类。 -------------------- 具体代码实现: Originator.java package com.example; import java.util.HashMap; import java.util.Map; public class Originator { private Map<String, Object> map; private int hp; private int mp; private int score; private int level; public Originator() { hp = 100; mp = 100; score = 0; level = 0; map = new HashMap<>(); } public void startPlay() { print("game start before info"); map.clear(); hp -= 10; mp -= 5; score += 20; level += 1; map.put("hp", hp); map.put("mp", mp); map.put("score", score); map.put("level", level); } private void print(String info) { System.out.println(info + ":-->" + "hp:" + map.get("hp") + " mp:" + map.get("mp") + " score:" + map.get("score") + " level:" + map.get("level")); } public Memento createMemeto() { print("game save info"); Memento memento = new Memento(); memento.setState(map); return memento; } public void restore(Memento memento) { map = memento.getState(); print("game restore info"); } public void exit() { hp = 0; mp = 0; score = 0; level = 0; map.clear(); print("game exit info"); } } Memento.java public class Memento { private Map<String, Object> map = new HashMap<>(); public Memento() { } public Map<String, Object> getState() { return map; } public void setState(Map<String, Object> map) { this.map.putAll(map); } } Caretaker.java public class Caretaker { private Memento memento; public void save(Memento memento) { this.memento = memento; } public Memento get() { return memento; } } Client.java public class Client { public static void main(String[] args) { Originator originator = new Originator(); originator.startPlay();//开始游戏 Caretaker manager = new Caretaker(); manager.save(originator.createMemeto());//游戏存档 originator.exit();//游戏退出 originator.restore(manager.get());//恢复存档信息 } } [20160721115028984]: /images/20220720/776cbfb65fb343bba50e518bc32e8a0f.png
相关 备忘录模式 一、前言 `实现不了是研发的借口?` 实现不了,有时候是功能复杂度较高难以实现,有时候是工期较短实现不完。而编码的行为又是一个不太好量化的过程,同样一个功能每个人的实现 心已赠人/ 2022年10月16日 15:21/ 0 赞/ 14 阅读
相关 备忘录模式 备忘录模式 定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 类图: ![这里写图片 「爱情、让人受尽委屈。」/ 2022年09月23日 15:52/ 0 赞/ 6 阅读
相关 备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: ![1340804147_ 以你之姓@/ 2022年09月19日 12:20/ 0 赞/ 208 阅读
相关 备忘录模式 转载:[备忘录模式 - C语言中文网][- C] 备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需 向右看齐/ 2022年09月01日 12:55/ 0 赞/ 6 阅读
相关 备忘录模式 今天无意间看到了备忘录模式,由于之前没有接触过,出于好奇,研究了一下,简单来说就是把当前状态记录下来,作为备份,用于意外情况发生恢复用的,有点类似于回退的意思。 备忘录设计 电玩女神/ 2022年08月19日 15:10/ 0 赞/ 184 阅读
相关 备忘录模式 1.使用场景: 一系列的操作之后恢复原来的状态。实际的使用场景有事务的回滚操作等。 2.UML表示 在备忘录模式中有以下的几种对象: 2.1源发器:Origi 骑猪看日落/ 2022年05月31日 09:26/ 0 赞/ 244 阅读
相关 备忘录模式 备忘录模式 一、概述 1. 就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到 原先的状态。 2. 结构 源发器类Origin 「爱情、让人受尽委屈。」/ 2022年04月17日 00:21/ 0 赞/ 249 阅读
相关 备忘录模式 前言 备忘录(Memento),在不破坏封装的前提下,捕获一个对象的内不状态,并在该对象之外保存这个状态 ,这样以后就可将该对象恢复到原来保存的状态。 一、发起人 一时失言乱红尘/ 2021年12月09日 00:49/ 0 赞/ 303 阅读
相关 备忘录模式 一 点睛 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件 爱被打了一巴掌/ 2021年07月24日 22:49/ 0 赞/ 496 阅读
相关 备忘录模式 忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 介绍 **意图**:在不破坏封装性的前提下... 小灰灰/ 2020年06月13日 05:38/ 0 赞/ 741 阅读
还没有评论,来说两句吧...