• 二十.备忘录模式


    备忘录模式:

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

    Demo

           //备忘录模式

       class Program

        {

           static void Main(string[] args)

           {

               Originator o = new Originator();

               o.State = "On";

               o.Show();

                //实例化管理者,保存状态

               Caretaker c = new Caretaker();

               c.Mement0 = o.CreateMemento();

               o.State = "off";

               o.Show();

               //恢复状态

               o.SetMemento(c.Mement0);

               o.Show();

               Console.ReadKey();

           }

        }

           class Originator

        {

           private string state;//保存的属性

           public string State

           {

               get { return state; }

               set { state = value; }

           }

           public Memento CreateMemento()//创建备忘录,将数据导入实例化一个Memento对象

           {

               return (new Memento(state));

           }

           public void SetMemento(Memento memento)//恢复备忘录

           {

               state = memento.State;

           }

           public void Show()

           {

               Console.WriteLine("State="+state);

           }

    }

    //备忘录类

        class Memento

        {

            private string state;

            public Memento(string state)

            {

                this.state = state;

            }

            public string State

            {

                get { return state; }

            }

        }

    //管理者类

       class Caretaker

        {

           private Memento memento;

           public Memento Mement0//得到或设置备忘录

           {

               get { return memento; }

               set { memento = value; }

           }

        }

  • 相关阅读:
    size_type、size_t、differentce_type以及ptrdiff_t
    题目1003:A+B ---c_str(),atoi()函数的使用;remove , erase函数的使用
    字符串中符号的替换---replace的用法
    A+B for Matrices 及 C++ transform的用法
    97.5%准确率的深度学习中文分词(字嵌入+Bi-LSTM+CRF)
    详细解读简单的lstm的实例
    如何使用 Pylint 来规范 Python 代码风格
    Python下Json和Msgpack序列化比较
    除了cPickle,cjson外还有没有更高效点的序列化库了
    python对象序列化或持久化的方法
  • 原文地址:https://www.cnblogs.com/yaoge/p/1815244.html
Copyright © 2020-2023  润新知