定义:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。又叫快照模式。
特点:
提供了一种可以恢复状态的机制。(优点)
- 实现了内部状态的封装。(优点)
- 简化了发起人类。(优点)
资源消耗大。如果要保存的内部状态信息过多或者特别频繁,将会占用比较大的内存资源。(缺点)
通常适用场景:
需要保存与恢复数据的场景
-
demo代码:
备忘录 ```java //备忘录 @Data @NoArgsConstructor @AllArgsConstructor public class Memento{ private String status; }
//备忘录管理 @Data public class MementoManage{ private Memento memento; }
//记录者 public class Recorder{ private String status;
public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}//创建备忘录public Memento createMemento() {return new Memento(status);}//恢复备忘录public void restoreMemento(Memento memento){this.setStatus(memento.getStatus());}
}
- 测试
```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("恢复原来状态:开始");
}
