zoukankan      html  css  js  c++  java
  • 设计模式:备忘录模式??

    定  义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

               这样以后就可以将该对象恢复到原先保存的状态。

    结构图:

    Originator(发起人):负责创建一个备忘录(Memento),用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。

    Memnto(备忘录):负责存储Originator对象的内部状态,并可防止Originator以外的对象访问备忘录Memento。

    Caretaker(管理者):负责保存备忘录(Memento),不能对备忘录的内容进行操作或检查。

    class Originator
        {
            public string State { get; set; }
    
            public Memento CreateMemento()
            {
                return new Memento(this.State);
            }
    
            public void SetMemento(Memento m)
            {
                this.State = m.State;
            }
    
            public void Show()
            {
                Console.WriteLine("State:" + this.State);
            }
        }
    
        class Memento
        {
            private string state;
    
            public Memento(string state)
            {
                this.state = state;
            }
    
            public string State
            {
                get { return state; }
            }
        }
    
        class CareToker
        {
            public Memento memento { get; set; }
        }
    View Code

    客户端调用:

                Originator originator = new Originator();
                originator.State = "ON";
                originator.Show();
    
                CareToker careToker = new CareToker();
                //创建备忘录保存内部状态
                careToker.memento = originator.CreateMemento(); 
    
                originator.State = "OFF";
                originator.Show();
    
                //使用备忘录恢复内部状态
                originator.SetMemento(careToker.memento);
                originator.Show();   
    View Code

    结果:

  • 相关阅读:
    与DSP通信时,RD&WR信号
    4.2.1 Vector bit-select and part-select addressing
    数据校验
    数据结构 (树,图)
    ASOP编译说明
    os
    20180203-增与查
    yum安装MariaDB
    20180202之engine,URL,base,session
    列表
  • 原文地址:https://www.cnblogs.com/qianxingdewoniu/p/3566703.html
Copyright © 2011-2022 走看看