设计模式简述(十七)备忘录模式

备忘录模式

描述

备忘录模式用于将对象的状态进行保存为备忘录,以便在需要时可以从备忘录会对象状态;其核心点在于备忘录对象及其管理者是独立于原有对象之外的

常用于需要回退、撤销功能的场景。

组件

  • 原有对象(包含自身业务属性 + 创建备忘录 + 从备忘录恢复)
java 复制代码
public class Originator {
    private String state;

    public void setState(String state) {
        this.state = state;
        System.out.println("Setting state to: " + state);
    }

    public String getState() {
        return state;
    }

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

    public void recoverFromMemento(Memento memento) {
        state = memento.getState();
    }
}
  • 备忘录对象(包含原对象需要备份、恢复的属性)
java 复制代码
public class Memento {
    private String state;

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

    public String getState() {
        return state;
    }
}
  • 备忘录管理对象
java 复制代码
public class Caretaker {
    private Memento memento;

    public Memento getMemento() {
        return memento;
    }

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

使用

java 复制代码
public class Sample {
    public static void main(String[] args) {
        Originator originator = new Originator();
        Caretaker caretaker = new Caretaker();

        originator.setState("State #1");
        // 原对象创建备忘录对象 并交给备忘录管理对象
        caretaker.setMemento(originator.createMemento());

		// 原有对象基于 来自备忘录管理对象的 备忘录对象 进行恢复
        originator.recoverFromMemento(caretaker.getMemento());
        System.out.println("Restored State: " + originator.getState());
    }
}
相关推荐
Supersist4 小时前
【设计模式03】使用模版模式+责任链模式优化实战
后端·设计模式·代码规范
geovindu5 小时前
go: Interpreter Pattern
开发语言·设计模式·golang·解释器模式
workflower6 小时前
从拿订单到看方向
大数据·人工智能·设计模式·机器人·动态规划
sensen_kiss10 小时前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.3 设计模式(上)
设计模式·软件工程
mit6.82410 小时前
20种Agent 设计模式
人工智能·设计模式
workflower10 小时前
企业酝酿数智化内驱力
大数据·人工智能·设计模式·机器人·动态规划
likerhood11 小时前
java设计模式 · 适配器模式 (Adapter Pattern)
java·设计模式·适配器模式
蜡笔小马12 小时前
04.C++设计模式-桥接模式
c++·设计模式·桥接模式
geovindu13 小时前
go:Condition Variable Pattern
开发语言·后端·设计模式·golang·条件变量模式
geovindu14 小时前
Python: Condition Variable Pattern
开发语言·python·设计模式·条件变量模式