• java实现备忘录模式


    备忘录模式是一种行为设计模式,它允许您捕获一个对象的内部状态,并在稍后的时间点将其恢复。这对于需要撤销操作或恢复到先前状态的应用程序非常有用。以下是在 Java 中实现备忘录模式的一般步骤:

    1. 创建一个原发器类(Originator):这是需要保存状态的类。它包含了要保存和恢复的状态信息。

    2. 创建一个备忘录类(Memento):这个类保存原发器的状态信息,并且只能由原发器本身访问。

    3. 创建一个负责人类(Caretaker):这个类负责保存备忘录对象,以便稍后可以恢复状态。

    现在,让我们通过一个示例来实现备忘录模式:

    // 步骤 1: 创建原发器类
    class Originator {
        private String state;
    
        public void setState(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    
        public Memento saveToMemento() {
            return new Memento(state);
        }
    
        public void restoreFromMemento(Memento memento) {
            state = memento.getState();
        }
    }
    
    // 步骤 2: 创建备忘录类
    class Memento {
        private final String state;
    
        public Memento(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    }
    
    // 步骤 3: 创建负责人类
    class Caretaker {
        private Memento memento;
    
        public void saveMemento(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("状态1");
            caretaker.saveMemento(originator.saveToMemento());
            
            // 修改原发器的状态
            originator.setState("状态2");
            
            // 恢复原发器到先前状态
            originator.restoreFromMemento(caretaker.getMemento());
            
            // 输出原发器的当前状态
            System.out.println("当前状态: " + originator.getState()); // 输出 "当前状态: 状态1"
        }
    }
    
    • 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
    • 70

    在这个示例中,原发器(Originator)类保存了一个状态,可以通过 saveToMemento 方法保存状态到备忘录(Memento)对象,然后通过 restoreFromMemento 方法从备忘录对象中恢复状态。负责人(Caretaker)类负责管理备忘录对象,保存和恢复原发器的状态。

    备忘录模式可以用于保存对象的状态历史,以便在需要时回滚到之前的状态。这在实现撤销、恢复或历史记录功能时非常有用。

  • 相关阅读:
    使用paddle ernie预训练模型进行中文文本分类代码
    Mobile-ViT (MobileViT)网络讲解
    测试用例需要哪些人来评审?如何高效评审?
    vue开发页面自适应屏幕尺寸
    二分查找binary search
    面试官:Redis中哈希数据类型的内部实现方式是什么?
    C++语法——stack堆栈
    Mysql8 %中间%模糊搜索 强行 支持 使用 索引 代替全文搜索 全文检索数据库
    Eclipse连接Mysql超详细教程
    windows在gem下安装jekyll的问题
  • 原文地址:https://blog.csdn.net/sunyuhua_keyboard/article/details/132684724