zoukankan      html  css  js  c++  java
  • 二十.备忘录模式

    备忘录模式:

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

           }

        }

  • 相关阅读:
    使用regsrv32.exe绕过应用程序白名单(多种方法)
    使用rundll32.exe绕过应用程序白名单(多种方法)
    Cobalt Strike 3.13的新功能
    kindeditor<=4.1.5上传漏洞复现
    Winrar目录穿越漏洞复现
    HTTP返回码总结
    如何将Debug文件夹下的资源打包成一个EXE文件直接执行
    我用VS2012在Nuget中安装Signalr之后报错
    System.Drawing.Color
    Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
  • 原文地址:https://www.cnblogs.com/yaoge/p/1815244.html
Copyright © 2011-2022 走看看