JAVA设计模式-备忘录模式-以游戏存档为例

介绍

备忘录模式的定义

备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。

这个模式的定义很好理解。其实就是备份数据,方便后续恢复,这里我们直接看案例。

案例

假如我们现在正在玩一款名为rim world的游戏,该游戏具有游戏数据,我们需要定时存档。这里需要一个类来专门管理存档,因为我们可能需要回退至不同时间的存档。

存档类

@Data
//存档类
public class Save {
    //这里简单化,假设只有存档名
    String name;

    public Save(String name) {
        this.name = name;
    }

}

存档管理类

public class Memorandum {
    HashMap<String,Save> saveHashMap=new HashMap<>();
    public void add(Save save)
    {
        if(save.getName()==null){
            System.out.println("存档错误");
            return;
        }
        if(saveHashMap.get(save.getName())!=null){
            System.out.println("即将覆盖存档");
        }
        saveHashMap.put(save.getName(),save);
    }
    public Save getSave(String name){
        return saveHashMap.get(name);
    }
}

游戏类

//游戏类
public class RimWorld {
    //保存存档,这里应该要将游戏数据写入存档中,不过没有设计
    public Save save(String name)
    {
        return new Save(name);
    }
    //读取存档,当然,因为我们没有设计存档内容,所以这里什么都不用处理
    public void loadSave(Save save){
    }
}

测试

  @Test
    public void test()
    {
        //创建一个游戏
        RimWorld rimWorld=new RimWorld();
        //游戏存档保存
        Save save = rimWorld.save("存档1");
        Memorandum memorandum=new Memorandum();
        memorandum.add(save);
        System.out.println(memorandum.getSave("存档1").getName()+"已保存");

        //读取存档
        Save save1 = memorandum.getSave("存档1");
        rimWorld.loadSave(save1);
        System.out.println(save1.getName()+"已读取");
    }

测试结果

存档1已保存
存档1已读取
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
备忘录模式是一种行为型设计模式,它允许在不破坏封装性的前提下捕获对象的内部状态,并在对象之外保存这个状态,以便在以后的某个时候将其恢复到原先的状态。 备忘录模式由三个主要角色组成: 1. 发起人(Originator):负责创建一个备忘录,并记录和恢复自身的内部状态。 2. 备忘录(Memento):负责存储发起人对象的内部状态。 3. 管理者(Caretaker):负责保存备忘录,并可以对其进行管理,但不知道备忘录的具体内容。 该模式的工作流程如下: 1. 发起人创建一个备忘录,将自己的状态保存在备忘录中。 2. 发起人可以根据需要在任何时候保存自己的状态。 3. 管理者将备忘录保存起来,可维护多个备忘录。 4. 在需要恢复状态的时候,可以通过管理者获取相应的备忘录,并将发起人的状态恢复到备忘录中保存的状态。 备忘录模式的优点是: - 发起人对象与备忘录对象分离,实现了信息的封装和隐藏。 - 备忘录对象存储了发起人对象的历史状态,可以实现撤销和恢复操作。 - 备忘录可以进行存储和管理,可进行序列化和持久化操作。 备忘录模式通常适用于以下情况: - 需要保存和恢复对象的状态,并且封装对象的状态对于其他对象来说是不可见的。 - 需要实现撤销和恢复功能。 - 需要保存和恢复部分或全部对象状态的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值