设计模式-行为型模式-备忘录模式

备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。[DP]

复制代码
//首先,我们定义Originator类,它有一个状态和一个方法来创建和恢复备忘录:
public class Originator {
    private String state;

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

    public String getState() {
        return state;
    }

    // 创建备忘录
    public Memento createMemento() {
        return new Memento(this.state);
    }

    // 恢复备忘录状态
    public void restoreMemento(Memento memento) {
        this.state = memento.getState();
    }
}
//接下来,我们定义Memento类,它负责存储Originator的状态:
public class Memento {
    private String state;

    // 构造器,用于从Originator获取状态信息
    public Memento(String state) {
        this.state = state;
    }

    // 获取备忘录中的状态信息
    public String getState() {
        return state;
    }
}
//然后,我们定义Caretaker类,它负责管理Memento对象:
public class Caretaker {
    private Memento memento;

    // 保存备忘录
    public void setMemento(Memento memento) {
        this.memento = memento;
    }

    // 获取备忘录
    public Memento getMemento() {
        return memento;
    }
}
//最后,我们编写一个简单的客户端代码来演示如何使用这些类:
public class MementoPatternDemo {
    public static void main(String[] args) {
        // 创建Originator对象
        Originator originator = new Originator();
        // 创建Caretaker对象
        Caretaker caretaker = new Caretaker();

        // 设置Originator的初始状态
        originator.setState("State A");
        System.out.println("Originator state: " + originator.getState());

        // 创建备忘录并保存
        caretaker.setMemento(originator.createMemento());

        // 改变Originator的状态
        originator.setState("State B");
        System.out.println("Originator state: " + originator.getState());

        // 从Caretaker恢复备忘录
        originator.restoreMemento(caretaker.getMemento());
        System.out.println("Originator state after restoring memento: " + originator.getState());
    }
}
相关推荐
鱼跃鹰飞6 小时前
设计模式系列:工厂模式
java·设计模式·系统架构
老蒋每日coding14 小时前
AI Agent 设计模式系列(十九)—— 评估和监控模式
人工智能·设计模式
会员果汁14 小时前
23.设计模式-解释器模式
设计模式·解释器模式
「QT(C++)开发工程师」21 小时前
C++设计模式
开发语言·c++·设计模式
茶本无香1 天前
设计模式之七—装饰模式(Decorator Pattern)
java·设计模式·装饰器模式
漂洋过海的鱼儿1 天前
设计模式——EIT构型(三)
java·网络·设计模式
老蒋每日coding2 天前
AI Agent 设计模式系列(十八)—— 安全模式
人工智能·安全·设计模式
老蒋每日coding2 天前
AI Agent 设计模式系列(十六)—— 资源感知优化设计模式
人工智能·设计模式·langchain
老蒋每日coding2 天前
AI Agent 设计模式系列(十七)—— 推理设计模式
人工智能·设计模式
冷崖2 天前
桥模式-结构型
c++·设计模式