设计模式-行为设计模式:备忘录模式 Memento
来源:互联网 发布:爱知中学高中部怎么样 编辑:程序博客网 时间:2024/05/19 15:44
备忘录模式就是给现在的情况做一下备份,以便后期找回操作
Lol类
[Serializable] public class Lol { //英雄名称 public string Name; //等级 public string Grade; public Lol(string name, string grade) { Name = name; Grade = grade; Console.WriteLine("英雄{0}创建完毕,进入游戏,当前等级{1}",this.Name,this.Grade); } public void Show() { Console.WriteLine("英雄{0}当前等级{1}",this.Name,this.Grade); } }
public class SerialzeHelper { /// <summary> /// 序列化 /// </summary> /// <param name="target"></param> /// <returns></returns> public static string Serializable(object target) { using (MemoryStream stream = new MemoryStream()) { new BinaryFormatter().Serialize(stream,target); return Convert.ToBase64String(stream.ToArray()); } } /// <summary> /// 反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="target"></param> /// <returns></returns> public static T Derializable<T>(string target) { byte[] targetArray = Convert.FromBase64String(target); using(MemoryStream stream = new MemoryStream(targetArray)) { return (T)(new BinaryFormatter().Deserialize(stream)); } } }
备忘录类
public class Pattern { private Dictionary<string, Lol> DictionaryLol = new Dictionary<string, Lol>(); //存档 public void Save(string SaveName,Lol lol) { if (DictionaryLol.ContainsKey(SaveName)) { //如果存在,则覆盖原纪录 DictionaryLol[SaveName] = Serial(lol); } else { //不存在该名称记录 直接添加 DictionaryLol.Add(SaveName,Serial(lol)); } } //读档 public Lol Get(string SaveName) { if (DictionaryLol.ContainsKey(SaveName)) { //如果存在,则覆盖原纪录 return DictionaryLol[SaveName]; } return null;//不存在则返回空 } //对lol进行序列化之后反序列化 返回一个新的对象 public Lol Serial(Lol lol) { return SerialzeHelper.Derializable<Lol>(SerialzeHelper.Serializable(lol)); } }
操作备忘录类
public class Execute { private Pattern pattern = null; public Execute() { pattern = new Pattern(); } public void Save(string SaveName,Lol lol) { pattern.Save(SaveName,lol); } public Lol Get(string SaveName) { return pattern.Get(SaveName); } }
调用
Console.WriteLine("**********************开始游戏***************************"); Lol l = new Lol("卡特琳娜","1"); l.Grade = "3";//升到3级 l.Show();//展示一下 Execute e = new Execute(); e.Save("3级存档",l); l.Grade = "5";//升到3级 l.Show();//展示一下 e.Save("5级存档", l); Console.WriteLine("**********************读取3级存档***************************"); l=e.Get("3级存档"); l.Show(); Console.WriteLine("**********************读取5级存档***************************"); l = e.Get("5级存档"); l.Show();
结果
0 0
- [设计模式-行为型]备忘录模式(Memento)
- 行为设计模式---备忘录模式(Memento)
- 【设计模式】行为模式之备忘录Memento
- 设计模式-行为设计模式:备忘录模式 Memento
- Memento(备忘录)设计模式
- java 设计模式 行为模式 -Memento(备忘录模式)
- 【设计模式学习笔记十九】【行为模式】【备忘录模式(Memento)】
- 设计模式----Memento(备忘录)模式
- 设计模式--备忘录模式(Memento)
- [设计模式]memento备忘录模式
- [设计模式]备忘录模式(Memento)
- 设计模式笔记--行为型模式之六--Memento 备忘录
- 设计模式(18)-行为型-备忘录模式(Memento)
- 设计模式--备忘录模式Memento(行为型)
- 设计模式(行为型)之备忘录模式(Memento Pattern)
- JAVA设计模式(19) —<行为型>备忘录模式(Memento)
- 设计模式(4)-行为型-备忘录模式(Memento)
- 设计模式-行为型- 备忘录模式(Memento)
- 阿基米德螺旋线
- codeforces128B——String
- Service学习之路(03)之绑定本地Service并与之通信
- 维纳滤波
- Apache Curator入门实战
- 设计模式-行为设计模式:备忘录模式 Memento
- Android传输数据时加密详解
- spring基础概念1
- 系统性能监控利器-collectd详解
- 如何获取注册高德Key使用的SHA1值与包名?
- 滤波电容的选择
- cocos2dx Android.mk 文件,批量获取cpp文件小工具
- 【Unity】那些你不得不用的好插件!
- Android工具类 全国省市的Json文件