zoukankan      html  css  js  c++  java
  • 备忘录模式(Memento Pattern)

    定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态

    类图:

            我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。例如word和vs中的撤消操作

    备忘录模式的结构

    • 发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
    • 备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。
    • 管理角色:对备忘录进行管理,保存和提供备忘录。

    代码:

         public class Originator
         {
            private string state;
            public string State
            {
                get { return state; }
                set { state = value; }
            }
            public Memento CreateMemento()
            {
                return (new Memento(state));
            }
            public void SetMemento(Memento memento)
            {
                state = memento.State;
            }
            public void Show()
            {
                Console.WriteLine("State=" + state);
            }
        }
        
        public class Memento
        {
            private string state;
    
            public string State
            {
                get { return state; }
            }
    
            public Memento(string state)
            {
                this.state = state;
            }
          
        }
        public class Caretaker
        {
            private Memento memento;
    
            public Memento Memento
            {
                get { return memento;}
                set { memento = value; }
            }
        }

    调用:

                Originator o = new Originator();
                o.State = "On";
                o.Show();
    
                Caretaker caretaker = new Caretaker();
                caretaker.Memento = o.CreateMemento();
    
                o.State = "Off";
                o.Show();
    
                o.SetMemento(caretaker.Memento);
                o.Show();

    效果:

  • 相关阅读:
    SPRINGMVC整合SOLR
    solr 嵌套entity 高亮查询
    solr 高级进阶,解决问题
    Solr的主从模式Master-Slave
    Solr8.0速成系列 | Solr客户端常用操作和查询语法 08
    solr 的全量更新与增量更新
    solr8.0.0和tomcat8.5.40的整合,完整版
    设置 Tomcat 的JVM运行内存
    mongo主库地址变更,从库修改数据源IP
    mysql数据表如何导入MSSQL中
  • 原文地址:https://www.cnblogs.com/nygfcn1234/p/3410186.html
Copyright © 2011-2022 走看看