示例#1
0
 // 将备忘录中的数据备份导入到联系人列表中
 public void RestoreMemento(ContactMemento memento)
 {
     this.ContactPersons = memento.ContactPersonBack;
 }
示例#2
0
 /// <summary>
 /// 恢复备份
 /// </summary>
 /// <param name="memento"></param>
 public void RestoreMemento(ContactMemento memento)
 {
     this._contactPersons = memento.GetMemento();
 }
示例#3
0
        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("输入的索引大于集合长度!");
                }
            }
        }