定义:

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

    特点:

  • 提供了一种可以恢复状态的机制。(优点)

  • 实现了内部状态的封装。(优点)
  • 简化了发起人类。(优点)
  • 资源消耗大。如果要保存的内部状态信息过多或者特别频繁,将会占用比较大的内存资源。(缺点)

    通常适用场景:

  • 需要保存与恢复数据的场景

  • 需要提供一个可回滚操作的场景

    demo代码:

  • 备忘录 ```java //备忘录 @Data @NoArgsConstructor @AllArgsConstructor public class Memento{ private String status; }

//备忘录管理 @Data public class MementoManage{ private Memento memento; }

//记录者 public class Recorder{ private String status;

  1. public String getStatus() {
  2. return status;
  3. }
  4. public void setStatus(String status) {
  5. this.status = status;
  6. }
  7. //创建备忘录
  8. public Memento createMemento() {
  9. return new Memento(status);
  10. }
  11. //恢复备忘录
  12. public void restoreMemento(Memento memento){
  13. this.setStatus(memento.getStatus());
  14. }

}


- 测试
```java
public static void main(String[] args) {
    Recorder recorder =new Recorder();
    MementoManage mementoManage =new MementoManage();

    recorder.setStatus("开始");
    mementoManage.setMemento(recorder.createMemento());
    System.out.println("保存状态");

    recorder.setStatus("进行中");
    System.out.println("新状态");

    recorder.restoreMemento(mementoManage.getMemento());
    System.out.println("恢复原来状态:开始");

  }