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

备忘录模式

描述

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

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

组件

  • 原有对象(包含自身业务属性 + 创建备忘录 + 从备忘录恢复)
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());
    }
}
相关推荐
YoseZang4 小时前
【设计模式】GoF设计模式之备忘录模式(Memento Pattern)
设计模式·备忘录模式
Wabi_sabi_x4 小时前
C++设计模式:面向对象的八大设计原则之二
开发语言·c++·设计模式
fanTuanye4 小时前
Java 中的 设计模式详解
java·设计模式·工厂模式
程序猿不脱发217 小时前
10 种微服务设计模式
微服务·设计模式·架构
LIU_Skill1 天前
基于建造者模式的信号量与理解建造者模式
c++·设计模式·建造者模式
星星火柴9361 天前
观 察 者 模 式
笔记·设计模式
碎梦归途1 天前
23种设计模式-行为型模式之状态模式(Java版本)
java·jvm·设计模式·状态模式·软考·软件设计师·行为模式
碎梦归途2 天前
23种设计模式-行为型模式之访问者模式(Java版本)
java·开发语言·jvm·设计模式·软考·软件设计师·行为型模式
摘星编程2 天前
并发设计模式实战系列(11):两阶段终止(Two-Phase Termination)
设计模式·并发编程