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

    结果:

  • 相关阅读:
    解决:TypeError: object() takes no parameters
    刷题(三)
    刷题(二)
    web自动化流程总结
    不能在Python Console中运行pytest
    关于pytest的一些问题
    UML设计,可以设计程序的用例图、类图、活动图等_SurfaceView
    android系统下消息推送机制
    Android中的动画,选择器,样式和主题的使用
    内存监测工具 DDMS --> Heap
  • 原文地址:https://www.cnblogs.com/qianxingdewoniu/p/3566703.html
Copyright © 2011-2022 走看看