备忘录模式——存档读档

简介: 备忘录模式——存档读档

  备忘录模式(Memento)定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。该模式又叫快照模式。

  使用场景

  • 使用命令模式时,需要实现命令的撤销
  • 还原错误或无效的状态


  结构

发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。


备忘录(Memento)角色:负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。


管理者(Caretaker)角色:对备忘录进行管理,提供保存与获取备忘录的功能,但其不能对备忘录的内容进行访问与修改。

  • 发起人类:
    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); }
    }

备忘录类:

    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 Memento     //得到或设置备忘录
        {
            get { return memento; }
            set { memento = value;}
        }
    }

客户端:

        static void Main(string[] args)
        {
            Originator o = new Originator();
            o.State = "On";
            o.Show();
            //保存状态时,由于进行了封装,可以隐藏Originator的实现细节
            Caretaker c = new Caretaker();
            c.Memento = o.CreateMemento();//创建状态为On的备忘录实例,并赋给Memento属性
            o.State = "Off";
            o.Show();
            o.SetMemento(c.Memento);
            o.Show();
            Console.Read();
        }

相关文章
|
数据库
60.【贪吃的球球存档操作】
60.【贪吃的球球存档操作】
53 0
|
6月前
|
设计模式
备忘录模式-大话设计模式
备忘录模式-大话设计模式
|
7月前
|
存储 设计模式 uml
C++备忘录模式实践:轻松实现撤销与恢复功能
C++备忘录模式实践:轻松实现撤销与恢复功能
115 0
|
7月前
|
存储 设计模式 Java
|
存储 设计模式
备忘录模式-实现撤销功能
备忘录模式-实现撤销功能
83 1
|
存储 设计模式 Go
备忘录模式——软件的“后悔药”
备忘录模式(Memento Pattern)是一种行为型设计模式
60 0
|
存储 设计模式
备忘录模式如何多次记录
备忘录模式如何多次记录
84 0
|
设计模式 存储 Java
理解Java设计模式中的备忘录模式:实现数据的快照和恢复
理解Java设计模式中的备忘录模式:实现数据的快照和恢复
|
设计模式
我学会了,备忘录模式
备忘录模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
149 0
我学会了,备忘录模式
|
存储
机房重构之备忘录模式的应用
机房重构之备忘录模式的应用
115 0
机房重构之备忘录模式的应用