简易的设计模式——备忘录模式

定义

备忘录模式提供了一种弥补真实世界的方法。在不破坏封装的前提下,捕获一个对象的内部状态并在该对象之外保存这个状态。以便对象可以恢复原先保存的状态。

备忘录模式的角色

  • Originator发起人角色:记录当前的内部状态,负责创建和恢复备忘录数据。
  • Memento备忘录角色:负责存储Originator发起人的内部状态。
  • Caretaker备忘录管理员角色:对备忘录进行管理、保存和提供备忘录。

代码实现

备忘录Memento.java

public class Memento {
    private String state = "";

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

    public String getState() {
        return state;
    }

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

发起人Originator.java

public class Originator {
    private String state = "";

    public String getState() {
        return state;
    }

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

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

    //恢复一个备忘录
    public void restoreMemento(Memento memento){
        this.setState(memento.getState());
    }
}

备忘录管理员Caretaker.java

public class Caretaker {

    private Memento memento;

    public Memento getMemento() {
        return memento;
    }

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

备忘录模式的使用场景

  • 需要保存和恢复数据的相关场景。
  • 提供一个可以回滚的操作。
  • 需要监控的副本场景。
  • 数据库连接的事务管理就是用备忘录模式。
posted @   whthomas  阅读(247)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示