zoukankan      html  css  js  c++  java
  • 备忘录模式

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

    优点: 

    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=On
    State=Off
    Restoring state...
    State=On
    

      

  • 相关阅读:
    HTML 5 使用 FileReader、FormData实现文件上传
    【JS深入学习】——事件代理/事件委托
    【JS深入学习】——函数创建和重载
    Yii
    YII简单的基于角色的访问控制
    怎样在Yii中显示静态页
    Yii framework 应用总结小窍门(转)
    Yii PHP 框架分析(四)
    Yii PHP 框架分析(三)
    Yii PHP 框架分析(二)
  • 原文地址:https://www.cnblogs.com/huangwei1992/p/9513318.html
Copyright © 2011-2022 走看看