备忘录模式

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         }
复制代码

 

  

posted @   爱生活,爱代码  阅读(211)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示