zoukankan      html  css  js  c++  java
  • 备忘录模式之备份是一种态度

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

            可是在奇妙的编程世界中,有一种魔法,能够让你避免非常多遗憾,强大的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;
            }
        }  
             client程序

             

     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();  
            }
        }
            在软件开发中,有时须要保存一个对象的状态,以便于同意用户取消相关操作或者从以往的状态中恢复过来。比方一个文档版本号管理系统,能够依据须要将指定文档恢复到之前保存过的随意一个状态。这时就能够通过备忘录模式来实现。备忘录模式在我们生活中的应用还有非常多,比方象棋中的悔棋功能,游戏中的存档功能,都是备忘录在实际生活中的应用。

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

  • 相关阅读:
    数据库存储过程和触发器
    现在输入 n 个数字, 以逗号, 分开; 然后可选择升或者 降序排序;
    我们在 web 应用开发过程中经常遇到输出某种编码的字 符, 如 iso8859-1 等, 如何输出一个某种编码的字符串?
    Linux常用命令
    Linux系统基础优化及常用命令
    基于DBUtils实现数据库连接池、蓝图及上下文管理
    Flask基础
    01-Flask入门
    Linux基础系统优化
    Linux中 用户管理与文件权限
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3825056.html
Copyright © 2011-2022 走看看