博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
备忘录模式
阅读量:6207 次
发布时间:2019-06-21

本文共 1532 字,大约阅读时间需要 5 分钟。

定义:保存一个对象的某个状态,以便在适当的时候恢复对象。

优点: 

1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。

2、实现了信息的封装,使得用户不需要关心状态的保存细节。

缺点:消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。

实现

Memento 包含了要被恢复的对象的状态。

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

Originator 创建并在 Memento 对象中存储状态。

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

Caretaker 对象负责从 Memento 中恢复对象的状态。

class CareTaker    {        private Memento memento;        public Memento Memento        {            get { return memento; }            set { memento = value; }        }    }

调用:

Originator originator = new Originator();            originator.State = "On";            CareTaker careTaker = new CareTaker();            careTaker.Memento = originator.CreateMemento();            originator.State = "Off";            originator.SetMemento(careTaker.Memento);

结果:

State=OnState=OffRestoring state...State=On

  

转载于:https://www.cnblogs.com/huangwei1992/p/9513318.html

你可能感兴趣的文章
数据显示,中国近一半的独角兽企业由“BATJ”四巨头投资
查看>>
log日志轮转--logrotate
查看>>
安装输入发
查看>>
用户配置相关文件
查看>>
老王学linux-ftp
查看>>
kvm vnc的使用,鼠标漂移等
查看>>
linux中fcntl()、lockf、flock的区别
查看>>
gitlab 2.7版本升级到2.8
查看>>
linux用户空间和内核exit的语义--linux没有线程
查看>>
乱花渐欲迷人眼-杜绝设计的视噪
查看>>
获取Extjs文本域中的内容
查看>>
RHEL 5基础篇—常见系统启动类故障
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
Redis-3.2主从复制与集群搭建 推荐
查看>>
随便说说:在ASP.NET应用程序中上传文件
查看>>
【jQuery Demo】图片由下至上逐渐显示
查看>>
在.NET中使用SMTP发送邮件
查看>>
Unity Camera的两种模式
查看>>
3.5. Ticket
查看>>
越狱第一至五季/全集迅雷下载
查看>>