设计模式-备忘录模式

备忘录模式是一种行为设计模式,它允许在不破坏封装的情况下捕获和恢复对象的内部状态。该模式通常用于需要保存和恢复对象状态的情况,例如撤销操作或错误恢复。

在Java中实现备忘录模式通常需要以下几个关键组件:

  1. Originator(原发器):它是需要保存状态的对象。它可以创建一个备忘录对象来保存当前状态,并可以使用备忘录对象来恢复先前的状态。

  2. Memento(备忘录):它是用于保存原发器状态的对象。备忘录对象可以包含原发器的状态信息,但不能被其他对象访问或修改。

  3. Caretaker(负责人):它是负责保存和恢复备忘录的对象。它可以将备忘录对象存储在某个位置,并在需要时将其返回给原发器。

下面是一个简单的Java代码示例,演示了如何实现备忘录模式:

复制代码
// Originator
class Originator {
    private String state;

    public void setState(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }

    public Memento saveStateToMemento() {
        return new Memento(state);
    }

    public void restoreStateFromMemento(Memento memento) {
        state = memento.getState();
    }
}

// Memento
class Memento {
    private String state;

    public Memento(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }
}

// Caretaker
class Caretaker {
    private Memento memento;

    public void saveMemento(Memento memento) {
        this.memento = memento;
    }

    public Memento getMemento() {
        return memento;
    }
}

// Usage
public class Main {
    public static void main(String[] args) {
        Originator originator = new Originator();
        Caretaker caretaker = new Caretaker();

        originator.setState("State 1");
        caretaker.saveMemento(originator.saveStateToMemento());

        originator.setState("State 2");
        caretaker.saveMemento(originator.saveStateToMemento());

        originator.setState("State 3");

        System.out.println("Current state: " + originator.getState());

        originator.restoreStateFromMemento(caretaker.getMemento());

        System.out.println("Restored state: " + originator.getState());
    }
}

这个示例中,Originator类表示需要保存状态的对象,Memento类表示备忘录对象,Caretaker类负责保存和恢复备忘录。在Main类中,我们创建了一个Originator对象和一个Caretaker对象,并演示了如何保存和恢复对象的状态。

相关推荐
梅头脑5 小时前
学了6种设计模式却写出了同事看不懂的代码——SOLID五原则反例对照,治好了我的"过度设计"
设计模式
workflower7 小时前
案例:大模型驱动的“发现- 研判- 整改- 验证”全闭环治理体系
人工智能·深度学习·机器学习·设计模式·机器人
董员外9 小时前
RAG 系统进化论(九):RAG 评测,怎样证明系统真的变好了?
人工智能·设计模式·程序员
西安小哥10 小时前
AI时代技术工程师的"道法术器势":学习图谱、成长规划与角色重塑
人工智能·设计模式·程序员
莫得感情 o12 小时前
设计模式 08 · 装饰器模式
设计模式·装饰器模式
董员外1 天前
RAG 系统进化论(八):Agentic RAG(智能体式 RAG),从回答问题到完成任务
人工智能·后端·设计模式
董员外1 天前
RAG 系统进化论(七):Multimodal RAG(多模态 RAG),当知识存在于表格、图片和页面中
人工智能·后端·设计模式
大山同学1 天前
第 2 篇(03-04 章):代理设计原则与工具使用设计模式
设计模式
啦啦啦啦啦zzzz2 天前
设计模式:桥接模式和组合模式
c++·设计模式·组合模式·桥接模式
莫得感情 o2 天前
设计模式 03 · 工厂方法模式
设计模式·工厂方法模式