IT评测·应用市场-qidao123.com

标题: 设计模式-备忘录 [打印本页]

作者: 老婆出轨    时间: 2024-8-5 03:52
标题: 设计模式-备忘录
备忘录(Memento)设计模式是为了保存对象当前状态,并在必要的时候恢复到之前保存的状态。以下是一个简单的C#备忘录模式的实现:
  1. // Originator 类,负责创建和恢复备忘录
  2. class Originator
  3. {
  4.     private string state;
  5.     public string State
  6.     {
  7.         get { return state; }
  8.         set { state = value; }
  9.     }
  10.     public Memento CreateMemento()
  11.     {
  12.         // 创建备忘录,保存状态
  13.         return (new Memento(state));
  14.     }
  15.     public void SetMemento(Memento memento)
  16.     {
  17.         // 恢复状态
  18.         state = memento.State;
  19.     }
  20.     public void Show()
  21.     {
  22.         Console.WriteLine("State = " + state);
  23.     }
  24. }
  25. // 备忘录 Memento 类,负责保存 Originator 状态
  26. class Memento
  27. {
  28.     private string state;
  29.     public Memento(string state)
  30.     {
  31.         this.state = state;
  32.     }
  33.     public string State
  34.     {
  35.         get { return state; }
  36.     }
  37. }
  38. // 管理者 Caretaker 类,负责保存备忘录,不应该对备忘录的内容进行操作和暴露
  39. class Caretaker
  40. {
  41.     private Memento memento;
  42.     public Memento Memento
  43.     {
  44.         get { return memento; }
  45.         set { memento = value; }
  46.     }
  47. }
  48. // 客户端代码
  49. class Program
  50. {
  51.     static void Main(string[] args)
  52.     {
  53.         // 创建发起人对象
  54.         Originator originator = new Originator();
  55.         originator.State = "State #1";
  56.         originator.Show();
  57.         // 保存状态
  58.         Caretaker caretaker = new Caretaker();
  59.         caretaker.Memento = originator.CreateMemento();
  60.         // 改变 originator 状态
  61.         originator.State = "State #2";
  62.         originator.Show();
  63.         // 恢复状态
  64.         originator.SetMemento(caretaker.Memento);
  65.         originator.Show();
  66.         Console.ReadKey();
  67.     }
  68. }
复制代码
在这个例子中,Originator类负责保存和恢复状态,Memento类负责保存状态,而Caretaker类负责保存Memento对象,不应该对其举行利用。客户端代码演示了如何使用这些类来保存和恢复对象状态。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4