• Java设计模式之备忘录模式


    备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,以便在日后恢复对象到这个状态。

    备忘录模式通常由三个主要角色组成:

    1. 发起人(Originator):负责创建一个备忘录,并记录当前对象的内部状态。
    2. 备忘录(Memento):用于存储发起人对象的内部状态。备忘录可以包含发起人的部分或全部状态信息。
    3. 管理者(Caretaker):负责保存备忘录对象,并在需要时将其返回给发起人。

    下面是一个简单的示例,说明如何使用备忘录模式来实现撤销操作:

    // 发起人类
    class Originator {
        private String state;
    
        public void setState(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    
        public Memento createMemento() {
            return new Memento(state);
        }
    
        public void restoreMemento(Memento memento) {
            state = memento.getState();
        }
    }
    
    // 备忘录类
    class Memento {
        private String state;
    
        public Memento(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    }
    
    // 管理者类
    class Caretaker {
        private Memento memento;
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
    
        public Memento getMemento() {
            return memento;
        }
    }
    
    // 示例代码
    public class Main {
        public static void main(String[] args) {
            Originator originator = new Originator();
            Caretaker caretaker = new Caretaker();
    
            // 设置初始状态
            originator.setState("State 1");
            System.out.println("初始状态:" + originator.getState());
    
            // 保存状态
            caretaker.setMemento(originator.createMemento());
    
            // 修改状态
            originator.setState("State 2");
            System.out.println("修改后的状态:" + originator.getState());
    
            // 恢复状态
            originator.restoreMemento(caretaker.getMemento());
            System.out.println("恢复后的状态:" + originator.getState());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    在上述示例中,Originator 类表示发起人,它负责创建备忘录并记录当前状态。Memento 类表示备忘录,它用于存储 Originator 的状态。Caretaker 类表示管理者,它保存备忘录对象并在需要时将其返回给 Originator。

    在示例中,我们首先设置 Originator 的初始状态为 “State 1”,然后保存该状态的备忘录。接着,我们修改 Originator 的状态为 “State 2”,但后来又通过恢复备忘录将其状态还原为 “State 1”。

    备忘录模式的优点是可以实现对象状态的保存和恢复,使得对象的状态变化对客户端透明。它可以在不破坏封装性的情况下实现状态的保存和恢复,提供了一种可靠的撤销操作的实现方式。

  • 相关阅读:
    各种格式文件预览
    JVM相关面试题及常用命令参数
    LoRa知识点记录
    【组合递归】【StringBuilder】Leetcode 17. 电话号码的字母组合
    【EI会议征稿通知】2024年图像处理、机器学习与模式识别国际学术会议(IPMLP 2024)
    人工智能:塑造未来生活的强大力量
    【jquery Ajax 练习】图书管理
    Hibernate JPA中的N+1 选择问题以及如何避免它
    数字与字符串互转
    3.吴恩达机器学习--神经网络
  • 原文地址:https://blog.csdn.net/kkwyting/article/details/133763044