// 将备忘录中的数据备份导入到联系人列表中 public void RestoreMemento(ContactMemento memento) { this.ContactPersons = memento.ContactPersonBack; }
/// <summary> /// 恢复备份 /// </summary> /// <param name="memento"></param> public void RestoreMemento(ContactMemento memento) { this._contactPersons = memento.GetMemento(); }
static void Main(string[] args) { //MyThread t = new MyThread(5); //ThreadStart threadStart = new ThreadStart(t.Calculate); //Thread thread = new Thread(threadStart); //thread.Start(); //string str1 = "abcABG122"; //string str2 = "ABcabG122"; //Console.WriteLine(string.Equals(str1, str2, StringComparison.CurrentCultureIgnoreCase)); //React obj = new React() { Height = 50.2, Widtd = 30.6 }; //double squal = obj.GetSqual(obj); //Console.WriteLine(squal); //Helper h = new Helper(); //h.DoWork(); // 孙悟空 原型 //MonkeyKingPrototype prototypeMonkeyKing = new ConcretePrototype("MonkeyKing"); //// 变一个 //MonkeyKingPrototype cloneMonkeyKing = prototypeMonkeyKing.Clone() as ConcretePrototype; //Console.WriteLine("Cloned1:\t" + cloneMonkeyKing.Id); //// 变两个 //MonkeyKingPrototype cloneMonkeyKing2 = prototypeMonkeyKing.Clone() as ConcretePrototype; //Console.WriteLine("Cloned2:\t" + cloneMonkeyKing2.Id); //Console.ReadLine(); //AbstractFile file1, file2, folder1, file3, folder2, folder3; //folder1 = new Folder("我的视频"); //folder2 = new Folder("我的图片"); //folder3 = new Folder("我的资料"); //file1 = new TextFile("文本1"); //file2 = new ImageFile("图像2"); //file3 = new TextFile("文本2"); //folder1.Add(file1); //folder2.Add(file2); //folder2.Add(file3); //folder3.Add(file1); //folder3.Add(file3); //folder1.KillVirue(); //folder2.KillVirue(); //folder3.KillVirue(); //Console.ReadLine(); //string roman = "MCMXXVIII"; //Context context = new Context(roman); //// Build the 'parse tree' //List<Expression> tree = new List<Expression>(); //tree.Add(new ThousandExpression()); //tree.Add(new HundredExpression()); //tree.Add(new TenExpression()); //tree.Add(new OneExpression()); //// Interpret //foreach (Expression exp in tree) //{ // exp.Interpret(context); //} //Console.WriteLine("{0} = {1}", roman, context.Output); //Console.ReadKey(); /// 中介者模式 测试 //DeepCopyDemo(); //DeepCopyDemo2(); List <ContactPerson> persons = new List <ContactPerson>() { new ContactPerson() { Name = "Learning Hard", MobileNum = "123445" }, new ContactPerson() { Name = "Tony", MobileNum = "234565" }, new ContactPerson() { Name = "Jock", MobileNum = "231455" } }; MobileOwner mobileOwner = new MobileOwner(persons); mobileOwner.Show(); // 创建备忘录并保存备忘录对象 Caretaker caretaker = new Caretaker(); caretaker.ContactMementoDic.Add(DateTime.Now.ToString(), mobileOwner.CreateMemento()); // 更改发起人联系人列表 Console.WriteLine("----移除最后一个联系人--------"); mobileOwner.ContactPersons.RemoveAt(2); mobileOwner.Show(); // 创建第二个备份 Thread.Sleep(1000); caretaker.ContactMementoDic.Add(DateTime.Now.ToString(), mobileOwner.CreateMemento()); Console.WriteLine("是否修改名为Tony通讯录,Y/N"); var flag = Console.ReadLine(); if (flag == "Y")//修改 { Console.Write("请输入你要修改后的备注:"); var name = Console.ReadLine(); mobileOwner.ContactPersons.ForEach(x => { if (x.Name == "Tony") { x.Name = name; } }); } mobileOwner.Show(); // 恢复到原始状态 Console.WriteLine("-------恢复联系人列表,请从以下列表选择恢复的日期------"); var keyCollection = caretaker.ContactMementoDic.Keys; foreach (string k in keyCollection) { Console.WriteLine("Key = {0}", k); } while (true) { Console.Write("请输入数字,按窗口的关闭键退出:"); int index = -1; try { index = Int32.Parse(Console.ReadLine()); } catch { Console.WriteLine("输入的格式错误"); continue; } ContactMemento contactMentor = null; if (index < keyCollection.Count && caretaker.ContactMementoDic.TryGetValue(keyCollection.ElementAt(index), out contactMentor)) { mobileOwner.RestoreMemento(contactMentor); mobileOwner.Show(); } else { Console.WriteLine("输入的索引大于集合长度!"); } } }