《设计模式之美》备忘录模式:对于大对象的备份和恢复,如何优化内存和时间的消耗?

王争《设计模式之美》学习笔记

备忘录模式的原理与实现

  • 备忘录模式,也叫快照(Snapshot)模式,英文翻译是 Memento Design Patte。
  • 在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。
  • 这个模式的定义主要表达了两部分内容:
    • 一部分是,存储副本以便后期恢复。这一部分很好理解。
    • 另一部分是,要在不违背封装原则的前提下,进行对象的备份和恢复。这部分不太好理解。

文中举例

  • 用户输入文本时,程序将其追加存储在内存文本中;
  • 用户输入“:list”,程序在命令行中输出内存文本的内容;
  • 用户输入“:undo”,程序会撤销上一次输入的文本,也就是从内存文本中将上次输入的文本删除掉。
public class InputText {
   
  private StringBuilder text = new StringBuilder();
  public String getText() {
   
    return text.toString();
  }
  public void append(String input) {
   
    text.append(input);
  }
  public void setText(String text) {
   
    this.text.replace(0, this.text.length(), text);
  }
}

public class SnapshotHolder {
   
  private Stack<InputText> snapshots = new Stack<>();
  public InputText popSnapshot() {
   
    return snapshots.pop();
  }
  public void pushSnapshot
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值