备忘录模式之备份是一种态度

        有些事,错误了就是永远;有些人,一转身就是一辈子,不要轻易忽略任何爱,哪怕只是前天母亲节一通平凡的电话;时光走着她的路,路过青春的脚步,每个人或许都有遗憾的时候,总是要等到睡觉前,才知道功课只做了一点点
总是要等到考试后,才知道该念的书都没有念,为了让自己的人生少些许遗憾,需要我们做好时间管理,提前做好准备,认真思量之后再做打算。

        但是在神奇的编程世界中,有一种魔法,可以让你避免很多遗憾,强大的word中具有“Ctrl+Z”的功能,PS等一些软件中,也具有此类功能,基本上所有的带编辑功能的软件都具有撤销这个功能,撤销功能给了我们恢复先前状态的机会。拿我们电脑系统而言,可以进行备份,把系统打成压缩包就是备份,为了在系统出现崩溃情况或中毒时还原成以前的样子!今天我们的模式就从备份开始说起,备忘录模式----在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。一如她自己的名字,就是为了备忘,首先我们来看一下备忘录模式的结构图:

         

        刚开始接触的电脑的时候,首先需要掌握的就是学会装系统,装来装去,免不了有点儿麻烦,这个时候,有了新的需求,就有了新的解决方案,那就是对我们先前的电脑进行备份,有句话这样说,备份是一种态度, 以电脑备份为例,看看备忘录模式如何在实际中运用:

          发起人(Originator)类

          

public class WindowsSystem
    {
        private string status;
                                          //需要保存的属性
        public string Status
        {
            get
            {
                return status;
            }
            set
            {
                status = value;
            }
        }

        public Memento createOtherSystem()             //创建备忘录
        {
            return new Memento(status);
        }
        public void recoverSystem(Memento m)           //恢复备忘录
        {
            this.status = m.Status;
        }
    }

           备忘录(Memento)类

              

public class Memento
    {
        private string status;

        public string Status
        {
            get
            {
                return status;
            }
            set
            {
                Console.WriteLine("系统处于:" + this.status);
                status = value;
            }
        }

        public Memento(string status)
        {
            this.status = status;
        }
    }

           管理者(Caretaker)类

           

public class UserComputer
    {
        private Memento memento;

        public Memento recoverMemento()
        {
            // 恢复系统
            return this.memento;
        }

        public void createMemento(Memento memento)
        {
            // 保存系统
            this.memento = memento;
        }
    }  

         客户端程序

         

 class Program
    {
        static void Main(string[] args)
        {
            WindowsSystem Win8 = new WindowsSystem(); // Win8系统
            UserComputer user = new UserComputer();
            Win8.Status = "良好的状态"; // Win8处于良的运行状态
            user.createMemento(Win8.createOtherSystem()); // 用户进行备份,Win8系统产生备份文件
            Win8.Status = "状态较差"; // Win8处于较差的状态
            Win8.recoverSystem(user.recoverMemento()); // 用户发出命令,进行备份还原
            Console.WriteLine("当前系统处于" + Win8.Status);
            Console.ReadKey();
        }
    }

        在软件开发中,有时需要保存一个对象的状态,以便于允许用户取消相关操作或者从以往的状态中恢复过来。比如一个文档版本管理系统,可以根据需要将指定文档恢复到之前保存过的任意一个状态。这时就可以通过备忘录模式来实现。备忘录模式在我们生活中的应用还有很多,比如象棋中的悔棋功能,游戏中的存档功能,都是备忘录在实际生活中的应用。

        用好备忘录,让我们的人生中少些许遗憾和后悔,多一份精彩,多一份期待......

时间: 2024-08-30 13:15:10

备忘录模式之备份是一种态度的相关文章

Java设计模式--备忘录模式

备忘录模式(别名:标记) 在不破坏封装性的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态. Memento Pattern(Another Name: Token) Without violating encapsulation, capture and externalize an object original state so that the object can be restored to this state later. 类图

第18章 备忘录模式(Memento Pattern)

原文  第18章 备忘录模式(Memento Pattern) 备忘录模式         概述: 备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式. 定义(源于GoF<设计模式>):在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态.       结构图:        代码举例: 1 2 3 4 5 6 7 8 9 10

1.备忘录模式

1备忘录模式的核心内容是: A:包含一个存储记录的结构(C++中用类这种结构来存储) B:包含产生记录的类. C:使用一种数据结构来存储操作的记录. 2备忘录模式的作用是回放所做的操作 3备忘录模式具体描述 备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象. 备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住, 并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态.   同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话 不然MM发现了会

IOS设计模式-备忘录模式

内容大纲 如何存储记录 备忘录模式的基本原理 使用备忘录模式 优化存储方案 恢复UIView的状态 1.如何存储记录 在存储记录时,第一步我们需要用一把钥匙去打开一把锁.第二步,当我们打开锁之后就会有黑盒子,我们一开始还不知道里面有什么,所以是黑盒子. 1.存储记录的必要性 生活中,比如去超市购物有时候就需要在入口储物柜存放自己的包裹 2.记录的唯一标示 储物柜对应一把钥匙和号码标示. 3.存储记录与取出记录 ===========================================

设计模式之禅之设计模式-备忘录模式

<一:备忘录模式的定义        --->备忘录模式(Memento Pattern)提供了一种弥补真实世界缺陷的方法,让"后悔药"在程序的世界中真实可行        --->在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态.        --->通俗地说,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法 二:备忘录模式的角色 ● Originator发起人角色      

Head First设计模式之备忘录模式

一.定义 不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样就可以将该对象恢复到原先保存的状态 二.结构 备忘录模式中主要有三类角色: 发起人角色:记录当前时刻的内部状态,负责创建和恢复备忘录数据. 备忘录角色:负责存储发起人对象的内部状态,在进行恢复时提供给发起人需要的状态. 管理者角色:负责保存备忘录对象,但是不能对备忘录对象的内容进行操作或检查. 三.适用场景 1.需要保存/恢复数据的相关状态场景. 2.提供一个可回滚的操作. 四.优缺点 优点:  1.给用户提

DBA工作备忘录之三:rman备份,未使用catalog,控制文件丢失的解决办法

备份|解决|控制 [Oracle] DBA工作备忘录之三:rman备份,未使用catalog,控制文件丢失的解决办法 作者:Fenng 日期:July 19 2004 情况描述客户报告数据库故障,新来的系统管理员误操作.删掉了一些文件.询问:删掉了那些文件?答曰:所有重要数据文件,所有控制文件.数据库原来是归档模式,用rman备份数据,rman 使用控制文件.幸运的是,最后一次rman full 备份是包括了控制文件在内.系统没有设定自动备份控制文件.现在状况是数据库无法启动. 不用说,客户的备

设计模式:备忘录模式(Memento)

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将对象恢复到原先保存的状态. 备忘录模式的角色: 1. 原发器(Originator):负责创建一个备忘录,用以记录当前对象的内部状态,通过也可以使用它来利用备忘录回复内部状态.同时原发器还可以根据需要决定Memento存储Originator的那些内部状态. 2. 备忘录(Memento):用于存储Originator的内部状态,并且可以防止Originator以外的对象访问Memento.在备忘录Meme

适配器模式之备忘录模式

设计模式目录 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox 备忘录模式 Memento Pattern 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态 通用类图 组成 发起人角色 Originator 记录当前时刻的内部状态,负责定义那些属于备份范围的状态,负责创建和恢复备忘录数据 备忘录角色 Memento 负责存储Originator 发起人对