zoukankan      html  css  js  c++  java
  • 简易的设计模式——备忘录模式

    定义

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

    备忘录模式的角色

    • 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;
        }
    }
    

    备忘录模式的使用场景

    • 需要保存和恢复数据的相关场景。
    • 提供一个可以回滚的操作。
    • 需要监控的副本场景。
    • 数据库连接的事务管理就是用备忘录模式。
  • 相关阅读:
    [Go] 实现websocket服务端
    [PHP] php使用event扩展的io复用测试
    [MySQL] 使用force index强制使用索引
    [Go] 使用net包作为tcp客户端读取http
    [Go] golang中的包管理
    [Go] 解决golang.org模块无法下载的问题
    [日常] linux设置环境变量
    [Go] golang定时器与redis结合
    [Go] golang定时器的使用
    [Linux] linux路由表
  • 原文地址:https://www.cnblogs.com/whthomas/p/4430134.html
Copyright © 2011-2022 走看看