设计模式(备忘录模式)

备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,属于行为模式。它是在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。它包含以下几类角色:

1、Memento:备忘数据的bean;

2、Originator:发起者,需要备份数据的对象,其备份内容与Memento相同,负责创建一份备份数据,并能够通过备份数据回写状态;

3、Caretaker:保存该备份数据的独享,类似第三方存储;

代码如下:

  • Memento
复制代码
public class Memento {
    private int state;
    
    public Memento(int state){
        this.state = state;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }
}
复制代码
  • Originator
复制代码
public class Originator {
    private int state;
    
    public Originator(){
        this.state = 0;
    }
    
    public Memento createMemento(){
        return new Memento(this.state);
    }
    
    public void setMemento(final Memento memento){
        this.state = memento.getState();
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }
}
复制代码
  • Caretaker
复制代码
public class Caretaker {
    private Memento memento;

    public Memento getMemento()
    {
        return memento;
    }

    public void setMemento(final Memento memento)
    {
        this.memento = memento;
    }
}
复制代码
  • APP 测试类
复制代码
public class App {

    public static void main(String[] args) {
        Originator ori = new Originator();
        Caretaker cv = new Caretaker();
        ori.setState(1);
        //将状态保存在Caretaker中
        cv.setMemento(ori.createMemento());
        System.out.println(ori.getState());
        ori.setState(2);
        //将Caretaker中的状态回写
        cv.setMemento(cv.getMemento());
        System.out.println(ori.getState());    
    }
}
复制代码
posted @   Fredric_2013  阅读(160)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示