设计模式-备忘录

老婆出轨  论坛元老 | 2024-8-5 03:52:56 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1028|帖子 1028|积分 3084

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
备忘录(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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

老婆出轨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表