备忘录模式
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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 让容器管理更轻松!