设为首页 加入收藏

TOP

设计模式-行为型-备忘录模式(二)
2019-10-10 18:14:56 】 浏览:366
Tags:设计模式 行为 备忘录 模式
50 this.fileBack = docs; 51 } 52 } 53 54 /// <summary> 55 /// 发起人 56 /// </summary> 57 public class Originator 58 { 59 //内部状态 60 public List<Document> docs; 61 62 public Originator(List<Document> docs) 63 { 64 this.docs = docs; 65 } 66 67 public Memento CreateMemento() 68 { 69 // 深拷贝传递对象 70 var str = JsonConvert.SerializeObject(this.docs); 71 return new Memento(JsonConvert.DeserializeObject<List<Document>>(str)); 72 } 73 74 public void SetMemento(Memento memento) 75 { 76 Console.WriteLine("Restoring state..."); 77 docs = memento.fileBack; 78 } 79 80 /// <summary> 81 /// 显示信息 82 /// </summary> 83 public void GetShow() 84 { 85 foreach (var doc in docs) 86 { 87 Console.WriteLine($"文件名:{doc.Name},内容:{doc.Content}"); 88 } 89 } 90 } 91 92 /// <summary> 93 /// 管理者 94 /// </summary> 95 public class Caretaker 96 { 97 // 使用多个备忘录来存储多个备份点 98 public Dictionary<DateTimeOffset, Memento> MementoDic { get; set; } 99 100 public Caretaker() 101 { 102 MementoDic = new Dictionary<DateTimeOffset, Memento>(); 103 } 104 }

备忘录模式的优缺点:

  优点:

    1)给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。

    2)实现了信息的封装,使得用户不需要关心状态的保存细节。

  缺点:消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。

备忘录模式的应用场景:

  1)需要保存/恢复数据的相关状态场景。

  2)提供一个可回滚的操作。

参考:https://blog.csdn.net/heyangyi_19940703/article/details/51376570

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ELK日志分析系统(1)-基本环境搭建 下一篇部分设计模式对比分析

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目