c# 备忘录模式

 更新时间:2012年10月29日 14:07:31   作者:  
备忘录模式:在不破坏封装的前提下,捕获一个对象的内部状态,并在这个对象之外的地方保存这个状态,这样以后就可将该对象恢复到原来保存的状态了
结构图:


Memento类:保存状态的容器
复制代码 代码如下:

    class Memento
    {
        public string State { get; set; }
        public Memento(string state)
        {
            this.State = state;
        }
    }

Caretaker是保存Memento类:
复制代码 代码如下:

    class Caretaker
    {
        public Memento Memento { get; set; }
    }

Originator类就是需要保存状态的类:
复制代码 代码如下:

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

 主函数调用:
复制代码 代码如下:

    class Program
    {
        static void Main(string[] args)
        {
            Originator o = new Originator();
            o.State = "On";
            o.Show();
            Caretaker c = new Caretaker();
            c.Memento = o.CreateMemento();
            o.State = "off";
            o.Show();
            o.SetMemento(c.Memento);
            o.Show();
            Console.ReadKey();
        }
    }
   

相关文章

  • c# record的使用场景

    c# record的使用场景

    这篇文章主要介绍了c# record的使用场景,帮助大家更好的理解和学习使用c#的新特性,感兴趣的朋友可以了解下
    2021-02-02
  • C#中if语句使用概述

    C#中if语句使用概述

    这里介绍C#使用if语句,C#使用if语句中的表达式必须放在一对圆括号中。除此之外,表达式必须是布尔表达式
    2014-03-03
  • C#实现Winform监控文件夹变化以及监控文件操作教程

    C#实现Winform监控文件夹变化以及监控文件操作教程

    在开发应用程序时,我们可能会因为场景的需要,要对文件系统中的文件或文件夹进行实时监测,以便在文件内容改变、文件被创建、删除或重命名时能够及时做出反应,今天,我将为大家介绍完整的操作流程,让你轻松实现监控文件/文件夹变化的功能,需要的朋友可以参考下
    2024-12-12
  • C#组件系列 你值得拥有的一款Excel处理神器Spire.XLS

    C#组件系列 你值得拥有的一款Excel处理神器Spire.XLS

    又一款Excel处理神器Spire.XLS,这篇文章主要为大家详细介绍了第三方组件Spire.XLS,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • C#使用Lazy<T>实现对客户订单的延迟加载

    C#使用Lazy<T>实现对客户订单的延迟加载

    这篇文章介绍了C#使用Lazy<T>实现对客户订单延迟加载的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • C#使用DLLImport调用外部DLL的方法

    C#使用DLLImport调用外部DLL的方法

    这篇文章介绍了C#使用DLLImport调用外部DLL的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • C#使用LINQ中Enumerable类方法的延迟与立即执行的控制

    C#使用LINQ中Enumerable类方法的延迟与立即执行的控制

    这篇文章主要介绍了C#的LINQ查询中Enumerable类方法的延迟与立即执行,LINQ语言集成查询可以让C#和VB以查询数据库相同的方式操作内存数据,需要的朋友可以参考下
    2016-03-03
  • Asp.Net中MVC缓存详解

    Asp.Net中MVC缓存详解

    这篇文章主要介绍了Asp.Net中MVC缓存的种类区别等内容,一下来学习下。
    2017-12-12
  • C#中按字符串截取长字符串实例

    C#中按字符串截取长字符串实例

    这篇文章主要介绍了C#中按字符串截取长字符串的实现方法,以实例形式展示了C#中正则匹配截取字符串的技巧,需要的朋友可以参考下
    2014-11-11
  • 实例解析C#设计模式编程中简单工厂模式的使用

    实例解析C#设计模式编程中简单工厂模式的使用

    这篇文章主要介绍了C#设计模式编程中简单工厂模式的使用,文中也举了在.NET框架下简单工厂模式的实现例子,需要的朋友可以参考下
    2016-02-02

最新评论