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

    备忘录结构
    image.png

    Originator(发起人):负责创建一个备忘录Memento,用以记录当期那时刻它的内存状态,并可使用备忘录恢复内部状态。
    Memento(备忘录)负责存储Originator对象的内部状态
    Caretaker:负责保存好备忘录Memento

    java代码:

    1. public class MementoTest {
    2. public static void main(String[] args) {
    3. Originator originator = new Originator("备忘录模式");
    4. //记录
    5. Caretaker caretaker = new Caretaker(originator.createMemento());
    6. originator.setState("更改内存值");
    7. System.out.println(originator.getState());
    8. //还原
    9. originator.setMemento(caretaker.memento);
    10. System.out.println(originator.getState());
    11. }
    12. //发起人
    13. public class Originator {
    14. private String state;
    15. public Originator(String state) {
    16. this.state = state;
    17. }
    18. public String getState() {
    19. return state;
    20. }
    21. public void setState(String state) {
    22. this.state = state;
    23. }
    24. public Memento createMemento(){
    25. return new Memento(state);
    26. }
    27. public void setMemento(Memento memento){
    28. state = memento.state;
    29. }
    30. }
    31. //备忘录
    32. public class Memento {
    33. String state;
    34. public Memento(String state){
    35. this.state = state;
    36. }
    37. }
    38. //保存备忘录
    39. public class Caretaker {
    40. Memento memento;
    41. public Caretaker(Memento memento){
    42. this.memento = memento;
    43. }
    44. }