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

    1、理解:备忘录模式就是在发起人内部有一个创建备忘录类的方法,这个备忘录类初始化时保存了发起人的状态,如果发起人要恢复状态就调用备忘录的状态属性,也可以通过一个管理者类来管理这个备忘录。

    2、定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

    3、代码:

    1)发起人类

     1  //发起人
     2     class Originator
     3     {
     4         private string state;
     5         public string State { get; set; }
     6         //创建备忘录
     7         public Memento CreateMemento()
     8         {
     9             return new Memento(state);
    10         }
    11         //恢复状态
    12         public void SetMemento(Memento memento)
    13         {
    14             state = memento.State;
    15         }
    16         //显示状态
    17         public void Show() 
    18         { 
    19             Console.WriteLine(state);
    20         }
    21 
    22     }

    2)备忘录

     1 //备忘录
     2     class Memento
     3     {
     4         private string state;
     5         public string State { get; }
     6         public Memento(string state) 
     7         {
     8             this.state = state;
     9         }
    10         
    11     }

    3)管理者

    1 //管理者类
    2     class Caretaker
    3     {
    4         private Memento memento;
    5         public Memento Memento { get; set; }
    6     }

    4)客户端

     1 static void Main(string[] args)
     2         {
     3             Originator o = new Originator();
     4             o.State = "On";
     5             o.Show();
     6 
     7             Caretaker c = new Caretaker();
     8             c.Memento = o.CreateMemento();
     9 
    10             o.State = "Off";
    11             o.Show();
    12             o.SetMemento(c.Memento);
    13             o.Show();
    14             Console.Read();
    15         }

      

  • 相关阅读:
    对于工程师责任和责任边界的认知
    windows消息机制与实例
    final阶段团队贡献分分配
    Final阶段用户调查报告
    对金州勇士团队的项目进行功能分解(加分作业)
    final review 报告
    final发布评论
    本周PSP
    final发布视频
    【转】mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案
  • 原文地址:https://www.cnblogs.com/zhengwei-cq/p/6766912.html
Copyright © 2011-2022 走看看