纵有疾风起
人生不言弃

设计模式二十–备忘录模式

定义

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可以将该对象复原成原来保存的状态。

备忘录模式的角色

1:发起人角色(Originator)该角色记录当前对象的内部状态。负责定义哪些属于备份范围内的状态,负责创建 和恢复备忘数据。

public class Originator{  private String state = "";  private String getState(){    return this.state;  }  private void setState(String state){    this.state = state;  }  public Memento createMemento(){     return new Memento(this.state);  }  public void restoreMemento(Memento m){    this.setState(m.getState());  }}

2:备忘录角色(Memento)
该角色负责存储发起人角色的内部状态,在需要时提供发起人需要的内部状态数据。

public class Memento{  private String state;   public Memento(String state){    this.state = state;  }  public String getState(){    return this.state;  }  public void setState(String state){    this.state = state;  } }

3:负责人(Caretaker)
该角色对备忘录进行管理,保存和提供备忘录。

public class Caretaker{  private Memento m;  public Memento getMemento{     return this.m;  }  public void setMemento(Memento m){    this.m = m;  }}

客户端代码:

public class Client{  Originator org = new Originator();  Caretaker care = new Caretaker();  //创建一个备忘录  Memento  memento = care.setMemento(org.createMemento());  //恢复一个备忘录  org.restore(care.getMemento());}

注意事项

1:备忘录的生命周期,应该在最近的代码中使用,要主动管理生命周期。
2:备忘录的性能,不能再循环中频繁创建备忘录,负责会提升系统开销。

使用场景

1:需要保存和恢复数据的状态。
2:提供一个可回滚的操作。
3:需要监控副本的场景。
4:数据库连接的事务管理模式就是备忘录模式

参考资料:设计模式(java)

文章转载于:https://www.jianshu.com/p/a03694a331a3

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 设计模式二十–备忘录模式
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录